Re: [問題] big5 與 utf8 的使用經驗
Big5 雖爛,但功能強大的 Unicode 也不簡單...
假設我們用 wchar_t buf[] 陣列存放了文字檔的內容,然後接受使用者的指示,
要隨機印出第 N 個字。
第 N 個字到底存在哪?選 buf[N] 是否可以?
如同前面文章版友提過,
當 unicode code point 超過 U+FFFF 時,會使用 surrogate pair,這就使得
第 N 個字的指標不一定是 buf + N。
有個 Windows API 叫 CharNextW(wchar_t *src),它會返回下一個字元的指標,理論
上重覆做數次就能取得正確位置...
但根據微軟員工的這篇文章:CharNext(ch) != ch+1, a lot of the time
http://blogs.msdn.com/b/michkap/archive/2005/01/14/352802.aspx
...CharNext and CharPrev do not currently handle surrogate pairs properly...
而且同篇文章的例子也顯示出,肉眼看起來是一個字元 (Glyph),
實際上卻是組合字,需要用到 3 個 Unicode Code Point,
它 1 個字在 UTF-16 下,要佔 6 個位元組。
聽說有個跨平台的函式庫叫 ICU,不知道裡面的函數能不能解決上面的問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.134.217
→
02/06 15:17, , 1F
02/06 15:17, 1F
推
02/06 17:11, , 2F
02/06 17:11, 2F
→
02/06 19:27, , 3F
02/06 19:27, 3F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 5 篇):