環境
- php 5.4
事象
PHP で error_log() 関数を使って日本語をエラーログに出力しようとすると、
出力された日本語部分が以下のような感じになり、読めなくなる
<E3><81><8C><E5><AD><98><E5><9C><A8><E3><81><97><E3><81><BE><E3><81><9B><E3><82><93><E3><80><82><E3><82><A8><E3><83><A9>
<E3><83><BC><E3><83><9A><E3><83><BC><E3><82><B8><E3><82><92><E7><94><9F><E6><88><90><E3><81><97><E3><81><BE><E3><81><99><E3><80><82>
原因
文字化けしている訳ではなくて、セキュリティの観点から適切にエスケープ処理してくれているだけなんだけど、
ということらしー。
対応
出力はされたものは以下のperlコマンドをパイプで繋いで見ると、閲覧できる。
tail -f logs/error.log | perl -nle 's/\\x(..)/pack("C",hex($1))/eg;print $_'
あざっしたー
コメント