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