|
Unicode中有一種特殊字符叫surrogate pair(代理對)。如果是utf16編碼,通常情況下,一個字符就佔用兩個字節。可是兩個字節的容量有限,只能承載Basic multilingual Plane内的字符(BMP--基礎多語言平面),凡65,536個。而實際上,截止於unicode5.0, 已編碼字符已達到了102,012個。光是cjkv(中日韓越)的漢字已採錄的就在7萬以上,兩個字節的編碼肯定是不夠用的。
2 u: C) b, l( z E- [
: \+ S5 R0 c+ J% Z1 q. Y+ tunicode的 cjkv字符最主要的有三組,cjkv unified ideographes (在BMP内,20,924個)、cjkv unified ideographes extension A (也在BMP内,6,582個)和 extension B(在第2平面,42,711個)。擴展B集的字符既然不在BMP内,就要用到連續兩個雙字符編碼的代理對來表示一個漢字(4bytes for 1 character)。
' L0 S' J. i5 t; ? u* w
# _" F) n. v" w, R4 d1 f+ G9 D, ]本論壇「康熙字典詞庫」中就有大量的擴展A/B集的字符。據我的觀查,mdict pc 版對擴展AB集的漢字都能正是顯示,但是它的輸入欄卻只接受基本字集裏的漢字。很怪異的是,擴展A集的漢字同樣也在BMP中(兩字節一字)居然也不能識別。
- @, r* L3 x7 g8 Q% T4 I# l& O. N3 I9 l1 | W3 s. \
相反如果打開fuzzy查詢的對話窗,則所有3集中的漢字都能正常輸入。
, d5 a; L5 x* @) k5 I3 j
( x' k: Y3 A) p" [! y我猜,可能原輸入欄設定的內碼是GBK,或者本地內碼(Window xp內碼雖然是utf16le但文件系統卻用GBK/BIG5),而詞庫內部卻用的是unicode,於是兩者有些參差。, R( v( \' P" v$ o" ]5 j4 y
) s- D. s4 D7 e0 l( q: G! n: p5 ]6 S1 R* c7 O
' P4 Q" L9 V3 G1 R, @" P& Y' }+ B% V4 [% A* l4 Y' f
[ 本帖最后由 blankego 于 2009-2-16 15:57 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?免费注册
x
|