文字コードをターミナルで調べる
- fileコマンド
- od, xddコマンドなどを使用する
ファイルがどの文字コードを使用してるかを調べる
$ file hoge hoge: ASCII text $ file a a: UTF-8 Unicode text
od
文字列を16進数へと変換してくれる
$ od -tx1 FILENAME 0000000 e7 bd ae e6 8f 9b e3 82 b3 e3 83 9e e3 83 b3 e3 0000020 83 89 e7 b7 a8 0a 0a 20 0a 74 72 3a 20 e7 bd ae 0000040 e6 8f 9b e3 81 99 e3 82 8b e3 81 a0 e3 81 91 e3 0000060 81 8b e3 81 a8 e6 80 9d e3 81 a3 e3 81 a6 e3 81 0000100 84 e3 81 9f e3 81 91 e3 81 a9 e3 80 81 e6 8c 99 0000120 e5 8b 95 e3 81 8c e3 81 a1 e3 82 87 e3 81 a3 e3 0000140 81 a8 e6 80 9d e3 81 a3 e3 81 9f e3 81 ae e3 81 0000160 a8 0a
最後の0a(=0x0a)
はlinux,macにおける改行コード(LF)を表す
横の行数表示も16進数にしたければ、-Axをつける
$ echo hogehogehogeあお | od -tx1 -Ax 0000000 68 6f 67 65 68 6f 67 65 68 6f 67 65 e3 81 82 e3 0000010 81 8a 0a 0000013
ASCII以外の文字は、URLエンコードと同じようにUTF-8で帰ってくるのか
xxd
odと同じように、16進数ダンプしてくれるツール
$ xxd hoge 00000000: 5468 6973 2069 7320 6120 7065 6e2e 0a54 This is a pen..T 00000010: 6869 7320 6973 2074 6865 2070 656e 2e0a his is the pen.. 00000020: 5468 6973 2069 7320 6161 2070 656e 2e0a This is aa pen.. 00000030: 5468 6573 6520 6172 6520 7065 6e73 2e0a These are pens.. 00000040: 5468 6573 6520 6973 2061 2070 656e 2e0a These is a pen.. 00000050: 5468 6973 2069 7320 7468 6520 7065 6e73 This is the pens 00000060: 2e0a 5468 6973 2069 7320 6120 7065 6e2e ..This is a pen. 00000070: 0a
echo
echo -e
でUnicode文字列を表示できる
$ echo hoge | xxd 00000000: 686f 6765 0a hoge. $ echo -e "\u68\u6f\u67\u65" hoge
手を動かすことで少しでも文字コードと仲良くなれたら幸いです。