stm32 utf8转unicode gb2312
由于我需要通过json接收平台下发 的文字,通过移远电子EC600 ec20 模块播放。
但是由于平台下发的是UTF8格式,EC600 通信模块只执行 unicode或者gbk,所以需要转化一下。
首先将utf8转为unicode,这时候将内容处理可以直接给模块使用
比如平台下发 “1响严严”
utf8内容为 “\x31\xE5\x93\x8D\xE4\xB8\xA5\xE4\xB8\xA5”

unicode 格式为 “003154CD4E254E25”(16进制)
AT+QTTS=1,“003154CD4E254E25” 这时候其实可以播放,当然也可以继续转为GBK,需要查表字库,字库大小40k左右
1、将Utf8 – Unicode
/**
* @brief utf8编码转unicode字符集(usc4),最大支持4字节utf8编码,(4字节以上在中日韩文中为生僻字)
* @param *utf8 utf8变长编码字节集1~4个字节
* @param *unicode utf8编码转unicode字符集结果,最大4个字节,返回的字节序与utf8编码序一致
* @return length 0:utf8解码异常,others:本次utf8编码长度
*/
#define PARSE_ERROR -1
uint8_t UTF8ToUnicode(uint8_t* utf8, uint32_t* unicode) {
const uint8_t lut_size = 3;
const uint8_t length_lut[] = {
2, 3, 4 };
const uint8_t range_lut[] = {
0xE0, 0xF0, 0xF8 };
const uint8_t mask_lut[] = {
0x1F, 0x0F, 0x07 };
uint8_t length = 0;
uint8_t b = *(utf8 + 0);
uint32_t i = 0;
if (utf8 == NULL) {

该博客介绍了如何在STM32设备上处理UTF8编码的字符串,将其转换为Unicode以便于通过EC600通信模块播放。内容包括UTF8转Unicode的代码实现,以及Unicode到GBK的转换,通过查表快速完成转换。示例代码展示了从UTF8到GBK的完整流程。
最低0.47元/天 解锁文章
9672





