找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: renyunpei
打印 上一主题 下一主题
收起左侧

keil汉字补丁0xfd已更新 解决keil 51单片机驱动12864液晶显示汉字出现乱码的问题

  [复制链接]
41#
ID:491923 发表于 2021-1-6 20:49 | 只看该作者
昨天出现了这个情况,用这个补丁解决了问题,谢谢楼主了
回复

使用道具 举报

42#
ID:82569 发表于 2021-2-5 23:55 | 只看该作者
“正”字遇到了这个问题,都2021年了,这个问题还是存在
回复

使用道具 举报

43#
ID:888361 发表于 2021-3-4 15:26 | 只看该作者
我的这个好像不行,还是乱码。
回复

使用道具 举报

44#
ID:115923 发表于 2021-10-19 16:07 | 只看该作者
http://www.51hei.com/bbs/dpj-130470-1.html
keil c51升级到v9.54后,原来的0XFD修复工具失效了,所有写了这个小工具。
0XFD问题是keil c51中一直存在的一个问题,表现为当C源代码中使用了汉字等非ASCII字符,而此字符的编码又恰好包含了大于或等于0xFD的字节时,这个字节将被编译器删除,从而最终程序代码的运行错误。
回复

使用道具 举报

45#
ID:693135 发表于 2022-1-21 14:10 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

谢谢楼主,现在显示正常了。

51hei图片_20220119185337.jpg (122.23 KB, 下载次数: 369)

51hei图片_20220119185337.jpg

20220120171010.jpg (137.13 KB, 下载次数: 325)

20220120171010.jpg
回复

使用道具 举报

46#
ID:707558 发表于 2022-1-29 09:24 | 只看该作者
用keil在使用汉字时有时会出现显示乱码,官方说明是有些汉字内码包含0xfd,可以通过加在该汉字后加0xfd解决,不过很麻烦,有了0xfd补丁就可以很好的解决这个问题。
回复

使用道具 举报

47#
ID:333678 发表于 2022-1-29 22:17 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

感谢分享,这个的确好用,解决了困扰我很久的问题。
回复

使用道具 举报

48#
ID:1017706 发表于 2022-6-4 01:21 | 只看该作者
不错,测试OK
回复

使用道具 举报

49#
ID:290796 发表于 2022-9-22 09:51 | 只看该作者
也发现这个问题了。
临时解决的办法:把汉字编码的2个字节,单独写到数组。
比如:
   mystr[0] = 0xCA;                // '数'的GBK内码: 0xcafd --> 因keil编译有错误,所以用hex方式
   mystr[1] = 0xFD;
不过这个只能算补救方法。
回复

使用道具 举报

50#
ID:473013 发表于 2022-10-26 08:39 | 只看该作者
hp34401a 发表于 2018-5-26 09:52
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本!

清测有效,Keil版本V952
回复

使用道具 举报

51#
ID:298011 发表于 2023-1-21 00:02 | 只看该作者
学习了,我就说为什么我的汉字一直显示出错。
回复

使用道具 举报

52#
ID:595949 发表于 2023-11-13 09:15 | 只看该作者
跪谢 已解决 大神牛逼
回复

使用道具 举报

53#
ID:155507 发表于 2025-6-22 09:27 | 只看该作者
关于 Keil 软件中 0xFD 问题的说明
众所周知,Keil 软件的 8051 和 80251 编译器的所有版本都有一个叫做 0xFD 的问题,主要表现在字
符串中不能含有带 0xFD 编码的汉字,否则 Keil 软件在编译时会跳过 0xFD 而出现乱码。
关于这个问题,Keil 官方的回应是:0xfd、0xfe、0xff 这 3 个字符编码被 Keil 编译器内部使用,所
以代码中若包含有 0xfd 的字符串时,0xfd 会被编译器自动跳过。
Keil 官方提供的解决方法:在带有 0xfd 编码的汉字后增加一个 0xfd 即可。例如:
printf("数学"); //Keil 编译后打印会显示乱码
printf("数\xfd 学"); //显示正常
这里的“\xfd”是标准 C 代码中的转义字符,“\x”表示其后的 1~2 个字符为 16 进制数。“\xfd”表
示将 16 进制数 0xfd 插入到字符串中。
由于“数”的汉字编码是 0xCAFD,Keil 在编译时会将 FD 跳过,而只将 CA 编译到目标文件中,后
面通过转义字符手动再补一个 0xfd 到目标文件中,就形成完整的 0xCAFD,从而可正常显示。
关于 0xFD 的补丁网上有很多,基本只对旧版本的 Keil 软件有效。打补丁的方法均是在可执行文件
中查找关键代码[80 FB FD],并修改为[80 FB FF],这种修改方法查找的关键代码过于简单,很容易修改
到其它无关的地方,导致编译出来的目标文件运行时出现莫名其妙的问题。所以,代码中的字符串有包
含如下的汉字时,建议使用 Keil 官方提供的解决方法进行解决
GB2312 中,包含 0xfd 编码的汉字如下:
褒饼昌除待谍洱俘庚过糊积箭烬君魁
例笼慢谬凝琵讫驱三升数她听妄锡淆
旋妖引育札正铸 佚冽邶埤荦蔟摭啐
帻猃恺泯潺妪纨琮椠辇挲臊忑睚铨稞
瘕颀螨簖酏觚鳊鼾
另外,Keil 项目路径名的字符中也不能含有带 0xFD 编码的汉字,否则 Keil 软件会无法正确编译此
项目。
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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