查表法utf8转gbk

  • 前言
  • 制作bin文件
  • 添加代码

前言

由于要使用esp32获取天气信息,从服务器返回的json文件编码格式为utf8格式,而我制作的字库为gb2312字库,中文会出现乱码。在网上找了很久,最简单的方法是查表法,由于utf8和gbk编码无法直接转换,使用表进行查找,此方法需要单片机有足够的存储空间,代码参考链接: link.

制作bin文件

使用正点原子的c2b转换工具,将表转换为bin文件, 表格代码在前言的链接代码中。

添加代码

int SwitchToGbk(const unsigned char* pszBufIn, int nBufInLen, unsigned char* pszBufOut, int* pnBufOutLen)
{int i = 0;int j = 0;unsigned short unicode;char gbk[50];char file[30];strcpy(file, "/spiffs/c2b.bin");FILE* fp = fopen(file, "rb");if (fp == NULL) {ESP_LOGW(__FUNCTION__, "File not found [%s]", file);return -1;}for(; i < nBufInLen; i++, j++){if((pszBufIn[i] & 0x80) == 0x00)     // 1?{pszBufOut[j]= pszBufIn[i];}else if ((pszBufIn[i] & 0xF0) == 0xE0) // 3? {if (i+ 2 >= nBufInLen) return -1; unicode = (((int)(pszBufIn[i] & 0x0F)) << 12) | (((int)(pszBufIn[i+1] & 0x3F)) << 6) | (pszBufIn[i+2]  & 0x3F); fseek(fp, 2*(unicode-0x4e00), SEEK_SET );fread(gbk, 1,2, fp);   //这里是打开表文件寻找相应位置 // SPI_Flash_Read(gbk,utf8_info.utf8togbkddr+(2*(unicode-0x4e00)),2);pszBufOut[j]= gbk[1];//gbk%256;pszBufOut[j+1] = gbk[0];//gbk/256;.j++;i+=2;}else{ESP_LOGI("U2C", "不知原因");return -1;}}*pnBufOutLen = j;fclose(fp);return 0;
}

esp32使用查表法utf8转gbk相关推荐

  1. python查表法是什么_python查表法提取骨骼线经历

    首先根据这篇博文https://www.cnblogs.com/xianglan/archive/2011/01/01/1923779.html,自己重新编写python代码,由于出现局部错误,导致出 ...

  2. CRC查表法——表的由来及Java实现CRC8校验算法

    转载请标明出处: http://blog.csdn.net/xx326664162/article/details/51718857 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定 ...

  3. 单片机c语言NTC温度查表程序,STM32查表法读NTC值并显示温度

    STM32查表法读NTC值并显示温度 #include "stm32f10x.h"Y'+F0IZ+ #include "delay.h"pU'`9fLi_ #i ...

  4. crc16modbus查表法_查表法计算CRC16校验值

    /******************************************************************************* * Copyright (c) 201 ...

  5. FPGA之道(63)“万能”的查表法

    文章目录 前言 "万能"的查表法 正弦波发生器示例 前言 又好几天没更新了,这就是又停止了读书的节奏,终于在毕业论文可以稍微舒缓下来的时候更新了博客,完成一个系列,读完一本书等等都 ...

  6. 嵌入式C语言查表法的项目应用

    嵌入式C实战项目开发技巧:如何对一个有规律的数组表进行位移操作 就像下面的这个表 之前写过上面这个标题的一篇文章,讲的是以位移的方式去遍历表中的数据,效率非常高,但是,如果要实现一个乱序的流水灯或者跑 ...

  7. VTK修炼之道23:图像基本操作_灰度图像映射成伪彩色图像(查表法)

    1.查表法伪彩图映射 图像彩色映射的原理是首先生成一个颜色查找表,然后根据图像的一个标量值向颜色查找表中查找对应的颜色,并用新颜色值替代原来的像素值.VTK中vtkImageMapToColors负责 ...

  8. 数组---进制转换(查表法)

    package com.shuzu; public class shuzuJinZhiZhuanHuan { * @param a 所要转换的十进制数,b 不同进制所要与(&)的数不同,wei ...

  9. 查表法实现反正切_关于python实现CRC32的应用和总结

    关于python实现CRC32的应用和总结 目前使用的Crc计算包含Crc32和Crc32mpeg2两种计算方式. 循环冗余检验 CRC 差错检测技术能够证明数据是完整的,是无差错的(只是非常近似的认 ...

最新文章

  1. leetcode139 单词拆分
  2. 闲鱼如何建设技术舆情治理体系 (多图多代码)
  3. python爬取哔哩哔哩视频_Python实现视频爬取下载
  4. 太香了!4999元就能入手iPhone 11 最高降价达900元
  5. Android 关机(reboot)流程 -- sys.powerctl
  6. 2021 年全国大学生电子设计竞赛实施过程说明
  7. linux 键盘映射修改
  8. 2020叉车司机考试及叉车司机模拟考试题库
  9. 如何在VeryCD中下载资源
  10. 海思3559万能平台:VGS的画线处理
  11. Ansible inventory文件详解
  12. Windows7 开机自启脚本
  13. 把EXCEL拆分成两个窗口的办法
  14. Word-embedding的资料整理
  15. python键盘键值表_Python怎么记录键盘鼠标敲击次数|Python统计鼠标点击次数 - PS下...
  16. 狂乱的潇洒主义者,频繁的追求自由者!
  17. python实现-用随机森林填补缺失值、均值填充0填充的比较
  18. python Linux学习之 ansible-- ansible test -m ping运行错误
  19. elementUI之省市区三级联动
  20. 用Visual Studio开发安卓应用

热门文章

  1. SolidWorks2015入门到精通视频教程(全20讲)
  2. 用three.js写一个小场景
  3. threejs 绘制球体_3D可视化库-Threejs调研及简单示例
  4. 基层医疗云LIS系统源码,SaaS服务,无需部署,检验界面优雅,功能齐全
  5. 门户网站运营工作全流程
  6. 5e服务器显示fps被锁定,5E掉帧严重 别给我说是我硬件问题
  7. 微信openid和unionid区别
  8. 【数据结构与算法综合实验】景区信息管理系统迭代开发
  9. 计算机毕业设计SSM毕业设计管理系统【附源码数据库】
  10. dockerk8s入门详解