Unicode 的解碼與編碼

本區專門提供 Mac OS X 使用者交換使用心得

版主: ross_ttbryanchangdigdogchester

回覆文章
內容
發表人
頭像
paladin
留言破百
文章: 248
註冊時間: 08/10/2001 1:01 am
來自: Tokyo/Japan

#1 文章 paladin »

悲 寫:這位朋友用了簡體字;在某兒被 "escaped" (交流區的系統?)
十進制 / 十六進制
21464 / 53D8
35831 / 8BF7
38382 / 95EE
26679 / 6837
26469 / 6765
有什麼程式可以幫忙轉這個嗎? :)
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

#2 文章 »

在 終端機 試試指令 bc :lol:

代碼: 選擇全部

% bc

bc 1.05
Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

代碼: 選擇全部

obase=16

代碼: 選擇全部

21464;35831;38382;26679;26469;65535

53D8
8BF7
95EE
6837
6765
FFFF


結束之、輸入 quit,按 enter 鍵

略述:bc 是一個計算機指令。obase=16 是改動 輸出的 base 為 十六進制;輸入/出 預設為十進制。

另,UTF-8 只有 65536 個 code point ( U+0000 - U+FFFF );啟動一支援 unicode 的程式 ( 如 TextEdit.app ),輸入法切換為 Unicode Hex Input。先緊按 option 鍵不放、再按上述所找到的十六進數字如 53D8;則 簡體的 "變" 字會出現。

推測其然:在某兒,BIG-5 字集 外 的字被 escaped;其對應的 code point 以十進制的數字呈現在留言。

又,要試試 applescript 的方法嗎? :D
頭像
paladin
留言破百
文章: 248
註冊時間: 08/10/2001 1:01 am
來自: Tokyo/Japan

#3 文章 paladin »

悲 寫:另,UTF-8 只有 65536 個 code point ( U+0000 - U+FFFF );啟動一支援 unicode 的程式 ( 如 TextEdit.app ),輸入法切換為 Unicode Hex Input。先緊按 option 鍵不放、再按上述所找到的十六進數字如 53D8;則 簡體的 "變" 字會出現。
可以唷!真是厲害。 :)
悲 寫:又,要試試 applescript 的方法嗎? :D
願聞其詳。

另,我還想知道如果我有一整個檔案都被 escape 掉了,要怎麼辦。如果寫程式把所有 &#... 都換成兩個 byte 的數字,TextEdit 會知道怎麼顯示嗎?如果是 email 或附件被 escape 掉了,有沒有更方便的工具?
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

#4 文章 »

paladin 寫:另,我還想知道如果我有一整個檔案都被 escape 掉了,要怎麼辦。如果寫程式把所有 &#... 都換成兩個 byte 的數字,TextEdit 會知道怎麼顯示嗎?如果是 email 或附件被 escape 掉了,有沒有更方便的工具?
一 這不是亂碼。在此留言內看到的 "&#?????;" 是有規律的出現,應有一個起因。 :roll:

二 UTF-8 編碼的文字可以是 1 - 3 byte。 :wink:

三 跨平台 ( Mac、*nix、Windows ) 要考慮 big-endian 及 little-endian;再考慮應用程式用什麼編碼 輸出 及 輸入。 :shock:

applescript 的;離題遠了,看看這 話題
頭像
janusng
嗜冰客
文章: 1048
註冊時間: 04/30/2001 1:01 am
來自: Metropolis Asylum
聯繫:

#5 文章 janusng »

非常多謝悲兄的無私精神,但Unicode已經不只十六bit,UTF-8也有四byte的。請參看Unicode Standard Annex #27

代碼: 選擇全部

Table 3.1. UTF-8 Bit Distribution
Scalar Value                UTF-16                               1st Byte  2nd Byte  3rd Byte  4th Byte
00000000 00000000 0xxxxxxx  00000000 0xxxxxxx                    0xxxxxxx
00000000 00000yyy yyxxxxxx  00000yyy yyxxxxxx                    110yyyyy  10xxxxxx
00000000 zzzzyyyy yyxxxxxx  zzzzyyyy yyxxxxxx                    1110zzzz  10yyyyyy  10xxxxxx
000uuuuu zzzzyyyy yyxxxxxx  110110ww wwzzzzyy 110111yy yyxxxxxx  11110uuu  10uuzzzz  10yyyyyy  10xxxxxx
* Where uuuuu = wwww + 1 (to account for addition of 1000016 as in Section 3.7, Surrogates).
如「圖檔」就是Unicode Point 0x22049,即🤹

這個問題,也困擾過我,尤甚不少applications也是當Unicode只有16-bit,Java也只是近來才support UTF-16,以前只能用UCS2!連Apple的Big5-HKSCS encoding也不support! :shock:
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

#6 文章 »

Janus,

恕過 :oops: 應修訂為 "UTF-8 編碼的文字可以是 1 - 4 byte" :oops:

新的疑惑:

一 U+FFFF 後的字怎樣用 Unicode Hex Input?
二 巽 (U+5DFD、&#24061)、或 這頁 所說的;跟所舉例子是否同一字符?

繼命名後、unicode 是另一頭痛的事 :evil:


又,在此留言內看到的 "&#?????;" 其起因有解嗎 :?:
頭像
janusng
嗜冰客
文章: 1048
註冊時間: 04/30/2001 1:01 am
來自: Metropolis Asylum
聯繫:

#7 文章 janusng »

我之前也是用Unicdoe Hex Input的,但一來要Cmd+Space多一次language,所以只有必須時才啟動。二來就是發現要輸入Unicode Point大於16-bit的Glyth,要按
頭像
janusng
嗜冰客
文章: 1048
註冊時間: 04/30/2001 1:01 am
來自: Metropolis Asylum
聯繫:

#8 文章 janusng »

剛才忘了答二,現在後補。

照跟Acrobat Fast East Asian Fonts來的DFSungStd裏的字型看來,「圖檔」(U+22049)上的是「巳」,「巽」(U+5DFD)上的是「己」。

又,「圖檔」是HKSCS,是Unicode 3.1之後的編碼,有個osoletted的Unicdoe 3.0的「圖檔」U+E127。
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

#9 文章 »

謝謝管理員的協助 :D

萬丈遠的 現在很切題;小弟也
回覆文章