🐪
極力何も入れずに文字コードをコマンドラインで判別したい
TL;DR
encguess hoge.pl
解説
普段文字コードの変換などは nkf
を愛用していますが、文字コードの判別などでたまに困るときがあります。
nkfを使って文字コードを判別する際は nkf --guess hoge
と入力するのが一般的だと思います。
ですが、この方法では、例えば絵文字が入った次の様なUTF8なファイルを与えると厳しい挙動をします。
sub term:<😎> { 1 }
sub prefix:<😁> { log $^n }
sub O { $^v }
say O(😎);
say O(😁 42);
(ちなみにこのコードはRaku(Perl6)で動くので試してみてください)
これを emoji.p6などのファイル名にしてnkfで与えると
$ nkf --guess emoji.p6
BINARY
いやまぁバイナリっぽいけれど....
こういう時は PerlのEncodeに付随している encguess
が便利です。
実際にencguessでやってみましょう。
$ encguess hoge.pl
hoge.pl UTF-8
いい感じにUTF8と判別されました!!! めでたい!!!!
encguess
はPerlが入っていればだいたい入っています。しかもPerlはgitがあればだいたい入っているので、linuxサーバーを建ててわざわざnkfをいれるのに抵抗がある方も、ぜひencguess
を使って文字コードを判別しましょう!!!!!!
Discussion