hpdell 发表于 2012-6-22 20:59:46

keil c51 v9.50a 0xfd液晶字符修正???????????

请问大侠们的keil c51 v9.50a 0xfd修正这个是怎么弄好的色????????使用以前的修正0xfd的工具没有效果了。

chenfzg 发表于 2012-6-22 22:25:36

v905之前的0xfd漏洞修正方法: 用HEXEdit修改c51.exe、a51.exe
查找    80fbfd56
替换为 80fbff56
v905的0xfd漏洞修正方法
查找    80fbfd0f
替换为 80fbff0f

hpdell 发表于 2012-6-23 13:46:05

chenfzg 发表于 2012-6-22 22:25 static/image/common/back.gif
v905之前的0xfd漏洞修正方法: 用HEXEdit修改c51.exe、a51.exe
查找    80fbfd56
替换为 80fbff56


你好,9.50的查找那个数据提示没有找到!!!

chenfzg 发表于 2012-6-23 16:35:54

查找    80fbfd0f
替换为 80fbff0f
这个数据查找,记得去掉勾选的FIND TEXT

cpwander 发表于 2012-6-23 18:03:47

学习了,升级时备用!

hpdell 发表于 2012-6-23 18:04:05

chenfzg 发表于 2012-6-23 16:35 static/image/common/back.gif
查找    80fbfd0f
替换为 80fbff0f
这个数据查找,记得去掉勾选的FIND TEXT

多谢你的 指点,已经修正成功了,非常的感谢!!!!!!

tianxiaoMCU 发表于 2012-12-21 20:03:01

我的得把C51.exe CX51.exe A51.exe AX51.exe 都改了才成

magiczero 发表于 2012-12-21 20:28:15

下面的是来自Keil官方的解决方法

http://www.keil.com/support/docs/2618.htm

GENERAL: COMPILER IGNORES 0XFD, 0XFE, 0XFF VALUES IN STRINGS

Information in this article applies to:

    * C166 Compiler All Versions
    * Cx51 Compiler All Versions
    * C251 Compiler All Versions

QUESTION

I have a problem with the interpretation of Russian strings in the Keil C51 compiler. Some Russian characters are using the encoding 0xFD. It looks like this encoding is ignored by the compiler and is not included in the program code.

Example:

code char RussianString[] = "??? ????";

Why does this problem exist and how can I avoid this behavior?
ANSWER

The character encodings 0xFD, 0xFE, and 0xFF are used internally by the C compiler. The ANSI standard only requires support for ASCII characters in the range 0x00 - 0x7F.

You may insert these characters by using HEX encodings in the string as follows:

code char RussianString[] = "My Text" "\xFD";

A simple text replacement which replaces all 0xFD characters with the string '" "\xFD' should do the job.

magiczero 发表于 2012-12-21 20:30:49

对于这个BUG建议还是不要修改软件,因为不确定在某些特定条件下是否会引起莫名奇妙的其他问题,而且涉及到这个BUG的汉字不多,下面是从GB2312中抽了出来:

褒 饼 昌 除 待 谍 洱 俘 庚 过

糊 积 箭 烬 君 魁 例 笼 慢 谬

凝 琵 讫 驱 三 升 数 她 听 妄

锡 淆 旋 妖 引 育 札 正 铸

佚 冽 邶 埤 荦 蔟 摭 啐 帻 猃

恺 泯 潺 妪 纨 琮 椠 辇 挲 臊

忑 睚 铨 稞 瘕 颀 螨 簖 酏 觚

鳊 鼾

碰到这些字,建议手动处理一下就好了!

hamipeter 发表于 2012-12-21 21:08:04

谢谢分享

Tliang 发表于 2013-3-12 10:04:00

mark                  

qq635274216 发表于 2013-3-13 19:11:33

今天遇到这个问题折腾了一天,原来这里就有

qinchl 发表于 2013-3-15 14:34:01

还是不太明白什么意思,哪位大大能否解释直白一些,谢谢。
code char RussianString[] = "My Text" "\xFD";
A simple text replacement which replaces all 0xFD characters with the string '" "\xFD' should do the job.

aeris 发表于 2013-3-17 04:41:29

qinchl 发表于 2013-3-15 14:34 static/image/common/back.gif
还是不太明白什么意思,哪位大大能否解释直白一些,谢谢。
code char RussianString[] = "My Text" "\xFD"; ...

意思就是说,如果你的字符中包含了0xFD,那么就会被忽略。但如果用\x转义符写的却不会,例如可以在字符串中写"\xFD",最后的数据中会保留这个字符。

所以对于受到影响的汉字,你可以直接用两个\x转义符把编码直接写上。或者额外写一个\xFD补上被滤掉的。
例如,“数字电路”这个字符串,直接写的话,“数”会出问题。那么你可以写:(“数”的编码是0xCA 0xFD)

"\xCA\xFD字电路"
或者写:
"数\xFD字电路"

血刃修罗 发表于 2013-5-14 17:59:13

mark   学习了

akmp 发表于 2013-6-9 14:41:06

学习了,谢谢解释!

承浩2012 发表于 2013-6-9 14:49:05

好东西,学习了

hpdell 发表于 2013-6-9 15:07:56

承浩2012 发表于 2013-6-9 14:49 static/image/common/back.gif
好东西,学习了

{:smile:}

huanggong 发表于 2013-8-19 11:36:35

好东西,学习了

H_Vi 发表于 2014-10-24 15:23:38

aeris 发表于 2013-3-17 04:41
意思就是说,如果你的字符中包含了0xFD,那么就会被忽略。但如果用\x转义符写的却不会,例如可以在字符串 ...

特别好···{:3_59:}

410023626 发表于 2014-10-24 19:09:51

了解了解

jxcrg_t35 发表于 2014-10-24 23:45:59

好帖,终于解决啦

gsq19920418 发表于 2014-10-25 08:01:44

Mark一下,留着备用!

waothom 发表于 2019-8-10 14:08:35

谢谢分享
页: [1]
查看完整版本: keil c51 v9.50a 0xfd液晶字符修正???????????