/ Coding-Sucks

Matlab 字串與 Unicode

先說結論:編碼是 UTF-16BE。

Matlab R14 開始將字串編碼方式由作業系統預設值改成了 Unicode。為了確定正確的編碼,寫了幾行小程式來判斷。

利用 dex2hex 把字元轉換為 HEX 值,可確認「喵」字在 Matlab 的編碼是 55B5:

dec2hex(uint32('喵'))
ans =
55B5

接著確認各種 Unicode 編碼下「喵」這個字的實際值,首先是 UTF-8,利用 unicode2native 函數來確認:

dec2hex(unicode2native('喵','utf8'))
ans =
E5
96
B5

接下來試試看 UTF-16:

dec2hex(unicode2native('喵','utf16'))
ans =
FF
FE
B5
55

有看到關鍵的 55B5 出現了,但是 UTF-16 是 4 bytes,看來應該是 UTF-16BE 與 UTF-16LE 的其中一種:

dec2hex(unicode2native('喵','utf16le'))
ans =
B5
55

dec2hex(unicode2native('喵','utf16be'))
ans =
55
B5

到底是那個白癡搞出那麼多種編碼
中文字真是博大精深呢 ╮(╯_╰)╭