Reiiden製作筆記E(OGRE編碼總結)

這兩天又被CEGUI的編碼問題鬱悶了,每次在編碼問題都要糾結一下,這次徹底整理:

一、概述
1 Ascii
    ASCII 只支持英語
    ANSI編碼 爲了本地化,使用多個字節代替表示1個字符(GB2312 BIG5 JIS GBK)
2 UNICODE
    UTF16  使用16位來存放一個序號(DBCS 寬字符模式)
3 UTF-8
    不定長,不存在跨平臺問題,中文一個佔3個

 

二、例子
    1 ASCII 使用一個字節存放一個字符(SBCS)
        Kuma8dao7 4B 75 6D 61 38 64 61 6F 37
    2 ANSI編碼 爲了本地化,使用多個字節代替1個字符(MBCS VC的一個字符選項)
        飛鳥空(GB2312) B7 C9 C4 F1 BF D5
    3 UTF16 使用16位存放一個序號(DBCS VC的另一個字符選項,一般是UTF16-LE)
        Kuma8dao7 4B 00 75 00 6D 00 38 00 64 00 61 00 6F 00 37 00
        飛鳥空  DE 98 1F 9E 7A 7A
    4 UTF8
        Kuma8dao7 4B 75 6D 61 38 64 61 6F 37
        飛鳥空  E9 A3 9E E9 B8 9F E7 A9 BA

 

三、VC字符串(可能有誤,是根據現象的推測)
    VC主要是DBCS和MBCS兩種,就是加L和不加L。
    如果加L那麼就把引號裏的內容轉化爲寬字符,不加L就直接保存。
    對於CEGUI所需要的UTF8,顯然這兩種方式都不合適,解決方法有兩種:
        1 UTF8和ASCII。英文是一致的,只要將中文變爲3個字符即可。所以只需要改變當前的文件格式爲UTF8,再輸入中文時,自然就變成了3個字符的UTF8。
        問題在於VC會認爲此文件是ASCII的,運氣好的話中文中沒有ASCII的控制符纔可。
        2 維持當前格式不變(GB2312)。輸入一個寬字符,轉化爲UTF8即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章