Diary

Diary

日々学んだことをアウトプットする場として初めてみました

文字コードをターミナルで調べる

文字コードをターミナルで調べる

  • 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 -eUnicode文字列を表示できる

$ echo hoge | xxd
00000000: 686f 6765 0a                             hoge.
$ echo -e "\u68\u6f\u67\u65"
hoge

手を動かすことで少しでも文字コードと仲良くなれたら幸いです。