设备返回到时UTF8字符,如何转换为GB2312字符?
设备返回到时UTF8字符数据流,如何转换为对应的GB2312字符? 是有公式换算 还是查表?用过的朋友讲解哈!{:smile:} 没有公式,查表。 单片机干这累的。pc或linux 就简单了 就是查表。utf8到unicode还能有公式,但再到2312就一定是查表了。反正都要查表,直接一步utf8查到2312最爽快 t3486784401 发表于 2023-6-1 19:14
就是查表。utf8到unicode还能有公式,但再到2312就一定是查表了。
反正都要查表,直接一步utf8查到2312最 ...
(引用自4楼)
啥表,能直接UTF8到GB2312? fbwcpu 发表于 2023-6-1 21:58
啥表,能直接UTF8到GB2312?
(引用自5楼)
自己做啊。
PC 上先遍历一下 2312 字符库,生成个 TXT 文档,文件尺寸 2*N;
上述文档找软件另存一下 UTF8,注意不要加 BOM 签名,文件尺寸 3*N;
最后自己写 C 读取上述文件,生成所需表格。 本帖最后由 Himem 于 2023-6-1 22:44 编辑
t3486784401 发表于 2023-6-1 22:09
自己做啊。
PC 上先遍历一下 2312 字符库,生成个 TXT 文档,文件尺寸 2*N;
(引用自6楼)
那还是不如先转成utf16再查表呀,gb2312汉字映射到utf16应该都是2字节的,就算直接寻址最多占128kb rom空间 查表的,你可以参考一下FATFS里面有这个转换表,utf转成GBK或反过来 gbk2utf2uni.cgbk2utf2uni.h y595906642 发表于 2023-6-2 10:42
gbk2utf2uni.cgbk2utf2uni.h
(引用自9楼)
文件可以传上来看看不? 论坛站长amo传的那个不是完整的GB2312,比如中文的标点符号就没有。https://www.amobbs.com/forum.php?mod=viewthread&tid=5777116&highlight=UTF8 直接使用 UTF8不就行了{:titter:} gbk-unicode 我有个帖子 谁能体会我当年在ATMEGA128上做unicode转GB2312查表转换的心情啊{:cry:}
搁到现在,PC软件基本上都用UTF8了,但是谁还用短信猫呢
原帖子在这里
https://www.amobbs.com/forum.php?mod=viewthread&tid=3669593
但是其中的附件好像没法下载了 如果你刚好有用fatfs的话,它里面有提供转换的函数 re, gb和unicode互转用查表是常规方案,查表用fatfs的就行
如果不想用fatfs的, 我这里也做了单独的表, 二进制的, 直接写到mcu flash指定地址即可.
页:
[1]