数码之家

 找回密码
 立即注册
搜索
查看: 1410|回复: 15

[STM] 由字符集引发的一场---灵异事件

[复制链接]
发表于 2022-7-23 02:59:01 | 显示全部楼层 |阅读模式
本帖最后由 飞向狙沙 于 2022-7-23 03:27 编辑

之前淘垃圾搞过几个山寨彩屏MP3,一直想着把屏幕点亮,然后就查了些资料,分析是128*160的ST7735,然后就找现成demo测试屏,一通操作后屏幕点亮,图片输出没问题,字母输出没问题,一输出中文就异常
异常如图

正常应该是下边这样,但是实际显示丢字,位置异常,而且是丢失246

一开始以为代码有问题,导致定位错误,查了半天代码都没问题,而且测试过程中还有这样,我只输出了一个”屏”字,结果打印出了C盘路径,简直不要太诡异

由此推断肯定不是代码的问题,那就是编译器的问题了,使用的vscode+platformIO,有点迷茫,然后先研究了下异常的规律,打印第一个中文没问题,打印第二个中文会不显示,打印第三个中文会显示,但是第二个字符的空白位置明显比正常宽,而且*str!=0貌似匹配不到字符串截止位置,然后感觉一个汉字在这里不只占了两个字节,瞬间一道惊雷炸裂,看了下文件格式UTF8,UTF8占3个字节,而Keil默认是GB2312,占两个字节,程序也是按2字节处理,导致程序取第一个中文只拿了2字节,取第二个中文时拿了第一个汉字的第三个字节和第二个汉字的第一个字节,组成了一个不存在的汉字,打印出了诡异的效果。
最终把文件改为GB2312格式,屏幕正常驱动

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 2家元 +40 收起 理由
玛德陛下 + 20 謝謝分享
jf201006 + 20 原創內容

查看全部打赏

 楼主| 发表于 2022-7-23 03:28:20 | 显示全部楼层

抱歉,不小心按了ctrl+enter,自己发出来了
回复 支持 反对

使用道具 举报

发表于 2022-7-23 06:01:10 | 显示全部楼层
嵌入式还是用专用IDE比较好。
回复 支持 反对

使用道具 举报

发表于 2022-7-23 08:11:21 | 显示全部楼层
都是字符集惹的祸啊。
回复 支持 反对

使用道具 举报

发表于 2022-7-23 08:34:31 | 显示全部楼层
能点屏的都是高手
回复 支持 反对

使用道具 举报

发表于 2022-7-23 08:40:03 | 显示全部楼层
字符集  字符集
回复 支持 反对

使用道具 举报

发表于 2022-7-23 08:52:09 | 显示全部楼层
高手高手高手高手
回复 支持 反对

使用道具 举报

发表于 2022-7-23 09:53:35 | 显示全部楼层
能点屏的都是高手
回复 支持 反对

使用道具 举报

发表于 2022-7-23 09:57:26 | 显示全部楼层
很正常 gbk和utf过渡期就这样
回复 支持 反对

使用道具 举报

发表于 2022-7-23 10:14:57 | 显示全部楼层
能点屏的都是高手
回复 支持 反对

使用道具 举报

发表于 2022-7-23 10:24:30 | 显示全部楼层
把文件改为GB2312格式,屏幕正常驱动。功夫不负有心人。
回复 支持 反对

使用道具 举报

发表于 2022-7-23 10:32:50 | 显示全部楼层

高手高手高高手
回复 支持 反对

使用道具 举报

发表于 2022-7-23 12:07:59 | 显示全部楼层
厉害厉害厉害  我就不会玩
回复 支持 反对

使用道具 举报

发表于 2022-7-23 15:08:20 来自手机浏览器 | 显示全部楼层
灵光一闪,乱码第一个就查字符
回复 支持 反对

使用道具 举报

发表于 2022-7-25 08:51:10 | 显示全部楼层
用汇编,这种问题一般很少吧?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-29 00:46 , Processed in 0.187201 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表