http://www.51hei.com/bbs/dpj-130470-1.html keil c51升级到v9.54后,原来的0XFD修复工具失效了,所有写了这个小工具。 0XFD问题是keil c51中一直存在的一个问题,表现为当C源代码中使用了汉字等非ASCII字符,而此字符的编码又恰好包含了大于或等于0xFD的字节时,这个字节将被编译器删除,从而最终程序代码的运行错误。 |
关于 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 软件会无法正确编译此 项目。 |
跪谢 已解决 大神牛逼 |
学习了,我就说为什么我的汉字一直显示出错。 |
hp34401a 发表于 2018-5-26 09:52 清测有效,Keil版本V952 |
也发现这个问题了。 临时解决的办法:把汉字编码的2个字节,单独写到数组。 比如: mystr[0] = 0xCA; // '数'的GBK内码: 0xcafd --> 因keil编译有错误,所以用hex方式 mystr[1] = 0xFD; 不过这个只能算补救方法。 |
不错,测试OK |
hp34401a 发表于 2018-5-26 09:52 感谢分享,这个的确好用,解决了困扰我很久的问题。 |
用keil在使用汉字时有时会出现显示乱码,官方说明是有些汉字内码包含0xfd,可以通过加在该汉字后加0xfd解决,不过很麻烦,有了0xfd补丁就可以很好的解决这个问题。 |
hp34401a 发表于 2018-5-26 09:52 谢谢楼主,现在显示正常了。 |
51hei图片_20220119185337.jpg (122.23 KB, 下载次数: 369)
20220120171010.jpg (137.13 KB, 下载次数: 325)
我的这个好像不行,还是乱码。 |
“正”字遇到了这个问题,都2021年了,这个问题还是存在![]() |
昨天出现了这个情况,用这个补丁解决了问题,谢谢楼主了 |
hp34401a 发表于 2018-5-26 09:52 测试可用,早发现这个补丁就好了 |
謝謝你,剛剛執行了,秀出成功的信息。 |
十分感谢,新KEIL C51 0XFD补丁很好用,旧版在我这里没有用,新版的可以。![]() |
admin 发表于 2010-7-22 04:45 我整了一下午了,我就没想到是编译器的问题,淦,感谢感谢 |
感谢大佬,虽然我来晚了10年。这个真的是听君一席话,胜读十年书。 |
感谢感谢,我也碰三显示不出来的问题了,昨晚弄了一个晚上,打了补丁当场好了。 |
感谢你的无私,我今天也碰到乱码了 |
还是可以,很棒 |
hp34401a 发表于 2018-5-26 09:52 多谢多谢 |
学习KEIL C51 0XFD补丁 |
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本! |
我的页无法打补丁啊爱爱爱 |
hp34401a 发表于 2018-5-26 09:52 新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本! |
在哪呢 |
![]() ![]() ![]() "飞流直下三千尺," “正弦波”(“三”“正”字显示乱码。)弄了好久都解决不了,现在终于在这里找到了解决方法。谢谢楼主与各位网友! |
hp34401a 发表于 2018-5-26 09:52 感谢你的无私,我今天也碰到乱码了 |
昨天下载测试了,我的keil3问题还是解决不了,今天下载了一个keil4 |
DSCX05 发表于 2018-8-18 18:34 下载试试看行不行?我有一个液晶屏显示“过”字不行,按照管方解决办法加\xFD都没有能解决正常显示,后在“过”字后加\x00才正常显示的,后又有一个“山”字不能正常显示,字后加什么都不行了,用了修复补丁也不行,只修复了“过”字显示的问题,“山”字的显示始终不行哎!今天在下载这个补丁试试看吧! |
hp34401a 发表于 2018-5-26 09:52 好用。。。。。。 |
新KEIL C51 0XFD补丁。支持KEIL5 及以下所有版本! |
keilfdfix2.JPG (53.83 KB, 下载次数: 276)
keil_v5_fixed1.jpg (144.25 KB, 下载次数: 246)
keilfdfix3.JPG (120.68 KB, 下载次数: 197)
VirusTotalA.jpg (193.81 KB, 下载次数: 190)
96.6 KB, 下载次数: 364, 下载积分: 黑币 -5
sglf0201 发表于 2015-5-3 14:39 我也这样 请问怎么解决的呀 |
keil汉字补丁能否给我份 |
keil汉字补丁能否给我份 |
admin 发表于 2010-7-22 04:45 感谢分享 |
这个方法很好用。多谢! |
admin 发表于 2010-7-22 04:45 为什么我下了补丁仍然显示乱码,求大神指教 |
怎么我下载了补丁还是显示乱码?求大神们指教 |