[問題] 如何處理UTF8字串及字元

看板C_and_CPP作者 (Pichu)時間13年前 (2011/02/15 20:21), 編輯推噓5(5024)
留言29則, 8人參與, 最新討論串1/1
    如提 UTF8會將字元以一到三個位元組(好像最多到六個)下去表示   但是宣告字串長度時,除了宣告成    char str[len*6]以外 還有其他做法嗎?   或者是直接宣告   struct uchar{ unsigned char data[6]; }; 會比較好?   或者我應該考慮固定長度為2個位元組的UTF16 只是這樣對於向下相容ASCII似乎就有麻煩了  http://zh.wikipedia.org/zh/UTF-8      -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.182.94

02/15 20:36, , 1F
我會建議內部處理的時候轉 unicode 用 wchar_t
02/15 20:36, 1F

02/15 20:36, , 2F
寫出或讀入時再換成 utf-8
02/15 20:36, 2F

02/15 20:45, , 3F
也就是說先轉成UTF16?
02/15 20:45, 3F
話說我剛剛查到的資料 是比較常用的都在三個位元組內  四個位元組的字現在似乎已經沒有再使用了  (當然還是可能被使用者拿來作顏文字)  但是這部分的字,假如用wchar_t下去處理,應該會更麻煩 ※ 編輯: pichubaby 來自: 140.117.182.94 (02/15 20:50)

02/15 20:58, , 4F
就算用 UTF-16,有時也需要4位元組存一字,比如 U+2A6D5
02/15 20:58, 4F

02/15 21:08, , 5F
你要考慮 strlen 的問題,中英文夾雜的字用utf-8幾乎
02/15 21:08, 5F

02/15 21:08, , 6F
無法做任何字串處理
02/15 21:08, 6F

02/15 21:31, , 7F
我好奇原po需要做的是什麼處理?
02/15 21:31, 7F

02/16 00:24, , 8F
把bbs從big5變成unicode ˊ口ˋ
02/16 00:24, 8F

02/16 01:45, , 9F
快使用 libiconv !
02/16 01:45, 9F

02/16 08:35, , 10F
推 iconv ... 用這個應該比較快 XDD
02/16 08:35, 10F

02/16 12:49, , 11F
可是如果用iconv的話 那麼顯示或儲存其中一個會是big5
02/16 12:49, 11F

02/16 12:50, , 12F
這樣的話使用者輸入unicode字元 之後還是無法正常讀取
02/16 12:50, 12F

02/16 12:53, , 13F
看不懂你在說什麼 ... bbs 輸入只會有 big5(含外字集)
02/16 12:53, 13F

02/16 12:53, , 14F
沒什麼 unicode 字元
02/16 12:53, 14F

02/16 13:23, , 15F
我的意思是 讓BBS支援unicode輸入輸出
02/16 13:23, 15F

02/16 21:28, , 16F
所以不能用 iconv 的點在哪?
02/16 21:28, 16F
假如說使用者輸入一個非big5字碼的字 例如韓文 那麼iconv應該就無能為力了吧? ※ 編輯: pichubaby 來自: 140.117.182.94 (02/18 01:56)

02/18 09:35, , 17F
iconv -f uhc或johab -t utf8 會爆炸嗎 XD
02/18 09:35, 17F

02/18 10:21, , 18F
我覺得不能用iconv的原因應該不是unicode而是big5
02/18 10:21, 18F

02/18 10:46, , 19F
就轉成問號阿, 不然你有啥更利害的處理法?
02/18 10:46, 19F

02/18 11:57, , 20F
就是不想轉成問號才上來問的阿...
02/18 11:57, 20F

02/18 20:26, , 21F
所以說你要找的是 big5 外字集對 unicode 的編碼表
02/18 20:26, 21F

02/18 20:27, , 22F
一個使用 big5 的輸入系統不會因為它輸入韓文就變成
02/18 20:27, 22F

02/18 20:28, , 23F
不是 big5 字碼, 就如同我們會說BBS上的日文是big5日文
02/18 20:28, 23F

02/18 21:00, , 24F
所以下一步是弄出可以輸入UTF8的client
02/18 21:00, 24F

02/18 21:00, , 25F
pietty是我現在測試用的client
02/18 21:00, 25F

02/19 04:18, , 26F
用 icu 的路過。
02/19 04:18, 26F

02/19 16:06, , 27F
感謝樓上 GOOGLE中
02/19 16:06, 27F

02/21 20:44, , 28F
抓這個 http://moztw.org/docs/big5/ 的UAO2.5來自己轉
02/21 20:44, 28F

02/23 23:07, , 29F
02/23 23:07, 29F
文章代碼(AID): #1DMc_POU (C_and_CPP)