|
謝謝各位。
按胡老師提供的補(bǔ)丁修正后已可正常顯示。
搜索了下,此問題與KEIL的正版與否無關(guān)(正版軟件的試用期內(nèi)使用也會(huì)有這個(gè)問題),是這么回事:
經(jīng)過詳細(xì)研究,西文字符在傳遞時(shí)應(yīng)該是ACSII值,一個(gè)字節(jié),數(shù)值小于128;而漢字傳遞的是其機(jī)內(nèi)碼,分高低2個(gè)字節(jié),2個(gè)字節(jié)都大于127,當(dāng)然并小于256。 字符串傳遞參數(shù)值一顯示,可不得了。其驚人之處有:
1."數(shù)","正","過"正確顯示時(shí)其傳參值為:0xca00,0xd500,0xb900;而其正確的機(jī)內(nèi)碼應(yīng)該是:0xcafd,0xd5fd,0xb9fd?磥砥涞臀蛔止(jié)被無情忽視。
2."數(shù)","正","過"單獨(dú)顯示正確,但是后面帶一個(gè)字符或漢字就顯示亂碼了。如"正:"傳參的值為:0xd53a,0x0000;"數(shù) "傳參的值為:0xca20,0x0000。而":"和" "的ASCII值恰好是0x3a,0x20,看來這幾個(gè)漢字是叛變到西文字符中去了,機(jī)內(nèi)碼只有一個(gè)高位字節(jié)了。
3.將傳參值直接賦給漢字顯示函數(shù),如"過"用"0xb9,0xfd"是顯示不了的,只能用"0xb9,0x00"。
4.比較發(fā)現(xiàn),顯示不正常的"數(shù)","正","過"三個(gè)字的低位字節(jié)都是0xfd,而一直顯示正確的"一二"等漢字機(jī)內(nèi)碼的低位字節(jié)都不是0xfd。 莫非keil跟0xfd有不共戴天之仇?
漢字的編碼種類繁多,沒有統(tǒng)一標(biāo)準(zhǔn),出現(xiàn)亂碼非常常見。
記得有這么些個(gè)漢字,寫入TXT文檔后再打開文字就變了。
|
|