同事在處理編解碼的問題 拿了個字串 "5F20",說它是 "张" 這個字 一看就大概猜到是 UTF16 可是怎麼得到答案呢? 實在不想寫程式,就直接透過 shell 指令來試試看 然後找到 xxd 這個指令 因為是 utf16,所以就算透過 xxd 得到後,也要再透過 iconv 由 utf16 轉回到 utf8 $echo "205F" | xxd -r -p|iconv -f utf16 -t utf8 张 xxd 預設吃的順序是 FFFE(小尾序,代表第二 byte 先讀) 所以原來的 5F20 要改成 205F 那自己加上 BOM "FEFF" 讓它變成大尾序呢? $echo "feff5F20" | xxd -r -p|iconv -f utf16 -t utf8 张 答案是可以的 原來的 "205F" 和 "FFFE205F" 結果是相同的 $echo "FFFE205F" | xxd -r -p|iconv -f utf16 -t utf8 张 也可以由文字反查出 utf16 字串,但終端機的文字還是必須由 utf8 轉為 utf16 $echo "张"|iconv -f utf8 -t utf16|xxd 0000000: fffe 205f 0a00 得到的結果,就看到前面的 fffe ,代表了是小尾序 如果用 hexdump ,則會得到大尾序的結果 $echo "张"|iconv -f utf8 -t utf16|hexdump 0000000 feff 5f20 000a 0000006 延伸: 如何還原 8 bit 字串