\xe3\x81\x9d のような文字化けした文字列が出ていて読めない」「Tripwireの改ざん検知ログに
\x から始まる謎の文字列が表示された」このような
\x から始まる文字列はUTF-8のバイト列をエスケープした形式で、Perlを使えば日本語に変換して読むことができます。
この記事では、
\x から始まるUnicode文字列をPerlで読めるようにする方法を解説します。・
\x 始まりの文字列はUTF-8バイト列のエスケープ表現・
perl -e 'print "\xe3\x81\x9d..."' で日本語に変換して表示できる・Pythonを使う方法も同様に利用できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
\xから始まる文字列とは何か
\x から始まるバイト列は、UTF-8でエンコードされた日本語のバイト表現です。たとえば「そ」という文字は、UTF-8では3バイト(
\xe3\x81\x9d)で表現されます。Apacheのアクセスログやセキュリティツールが、この形式でバイト値を出力することがあります。
以下のようなログが出た場合を例にします。
File system error. Filename: /usr/bin/pdgyjqltyz \xe3\x81\x9d\xe3\x81\xae\xe3\x82\x88\xe3\x81\x86\xe3\x81\xaa\xe3\x83\x95\ xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x82\x84\xe3\x83\x87\xe3\x82\xa3\xe3\x8 3\xac\xe3\x82\xaf\xe3\x83\x88\xe3\x83\xaa\xe3\x81\xaf\xe3\x81\x82\xe3\x82\x8a\ xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93
Perlで\xバイト列を日本語に変換する
基本的な変換方法
perl -e 'print "..."' コマンドに \x バイト列をそのまま渡すと、Perlが内部でUTF-8テキストとして解釈して出力します。
$ perl -e 'print "\xe3\x81\x9d\xe3\x81\xae\xe3\x82\x88\xe3\x81\x86\xe3\x81\xaa\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x82\x84\xe3\x83\x87\xe3\x82\xa3\xe3\x83\xac\xe3\x82\xaf\xe3\x83\x88\xe3\x83\xaa\xe3\x81\xaf\xe3\x81\x82\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93"' そのようなファイルやディレクトリはありません
\x バイト列が日本語テキストに変換されて表示されます。
改行を追加して見やすく出力する
を末尾に追加すると、出力後に改行されて見やすくなります。$ perl -e 'print "\xe3\x81\x9d... "'
Pythonで変換する方法
Perlの代わりにPythonを使うこともできます。$ python3 -c 'print(b"\xe3\x81\x9d\xe3\x81\xae\xe3\x82\x88...".decode("utf-8"))' そのようなファイルやディレクトリはありません
b"..." でバイト列を作り、.decode("utf-8") でUTF-8テキストに変換します。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| Perlで\xバイト列を日本語変換 | perl -e 'print "\xe3\x81..."' |
| Pythonで\xバイト列を日本語変換 | python3 -c 'print(b"\xe3\x81...".decode("utf-8"))' |
Linuxのログ解析、もっと深く理解したいですか?
ログの文字化け解決に限らず、Linuxサーバーの管理には様々な知識が必要です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
