先說結論:編碼是 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
到底是那個白癡搞出那麼多種編碼
中文字真是博大精深呢 ╮(╯_╰)╭