完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,问题是这样的 屏幕字库是GB2312编码,所以我将编译器调整为GB2312,并将串口信息打印到电脑,发现在串口助手也是GB2312编码时,显示也是乱码,将串口助手编码改成utf—8时,反而显示正常。 |
|
相关推荐
6个回答
|
|
首先,你别管串口调试助手里能不能正常显示,别管它用哪种编码能在串口调试助手里显示正常。
第二步,把裸机程序和串口调试助手相连,发送一个中文字符序列,串口调试助手里显示十六进制格式,把这个十六进制格式字符序列拷贝下来。 第三步,把 studio 生成的程序跑起来和串口调试助手相连,发送相同的中文字符序列,串口调试助手显示十六进制格式,和上面的十六进制字符比较。 八成,这俩字符串不一样,或者说,studio 发出来的中文序列是错的。 解决办法就是,把代码里所有的中文字符换成十六进制格式写法。按照裸机程序里发出来的中文的十六进制转义写成字符串。”xe5xe8x30” 类似这样写法 |
|
|
|
确实是这样,测试两个字的ascII码不一样了,但是非常玄学的是,正确的程序是我重新生成的RT_Thread,直接main函数里写的。。。。 是不是在转换编码的时候软件出bug了,导致实际上并没有按照设置的GB2312来编译 |
|
|
|
因为我新生成的,可以正常在串口屏显示的,编码GB2312的程序,在GB2312编码的串口助手上是正常显示的;
而老程序虽然设置上是GB2312的,但是在GB2312编码的串口助手上显示是乱码,调整成UTF-8反而显示正常了。 |
|
|
|
不同的编译器,不同的 IDE 对源码文件的编码格式不一样。studio 使用的 gcc 编译器,源文件编码格式也是 UTF-8 ,导致你发的字符是 UTF-8 编码的,前边你的裸机程序应该是 GBK 编码的。一劳永逸,兼顾所有程序就用上面我说的方法
比如 “测试” 这两个字,GBK 编码就是 “xB2xE2xCAxD4” 所有你需要用到的中文,要么去找个转码网站转换一下,或者用裸机程序把需要用到的中文字符集发一遍,得到十六进制码,然后用这种方式写到代码里。这种方式虽然看着不方便,但是适用所有环境 |
|
|
|
但是还有一个问题,实际上我在编译的时候将编码改成GB2312重新编译了,也是不行;但是新生成一个rtthread工程用GB2312编码,就可以了;感觉rtthread studio 对编码的更改可能也是有点问题
|
|
|
|
改文件编码也行,但是我不建议这么做。容易出现多种编码共存的项目。很让人头疼的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
590 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2241 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1233 浏览 0 评论
1788 浏览 0 评论
1464 浏览 0 评论
74811 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:50 , Processed in 0.734428 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号