Re: [問題] big5 與 utf8 的使用經驗

看板C_and_CPP作者 (CA)時間12年前 (2013/02/06 05:08), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串2/5 (看更多)
※ 引述《pziyout (pziyout)》之銘言: : 最近打算重寫一些程式,需要使用大量的中文字,正在煩惱是否要整個 : 使用 utf8 寬字串,請教有經驗的人是否可分享你的撰寫經驗。 UTF-8 != Unicode 這是最最最重要的大前提 你不會想要直接在程式裡處理 UTF-8 字串的 因為 UTF-8 的單一字元長度不同 寬字元的編碼在 Windows 和 POSIX 用的也不太一樣 Windows 用的是 UTF-16 (其實無法容納所有 Unicode 字元,但大部分字元都沒問題) POSIX 用的是 UTF-32 還有你最好不要用 char * ns = "字串"; 或是 wchar_t * ws = L"字串"; 的方式直接在原始碼內寫上中文 (事實上原始碼內不該出現 ascii 範圍外的任何字元) 因為就是會有人搞不清楚他現在存檔用的是什麼編碼 (尤其是在Windows) 就算你百分之百確定你存的是 UTF-8 VC 的 cl.exe 仍然會用當前系統的 locale 編譯 保險的方法是你自已轉成 hex: char * ns = "\xE6\xAD\xA3\xE9\xAB\x94\xE4\xB8\xAD\xE6\x96\x87"; 再轉成寬字串,或是用 gettext 之類的工具 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.182.26.69

02/06 13:33, , 1F
UTF-16可以容納所有unicode字元,它其實是變動長度編碼
02/06 13:33, 1F

02/06 13:34, , 2F
UCS-2則是固定2bytes,無法表示BMP以外的字元
02/06 13:34, 2F

02/06 13:35, , 3F
UTF-16 是可變長度編碼,UCS-2 則是固定長度。
02/06 13:35, 3F

02/06 13:35, , 4F
我想表達的是不能在單一字元容納所有 code point
02/06 13:35, 4F
文章代碼(AID): #1H4ULTck (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1H4ULTck (C_and_CPP)