はじめに
久しぶりにperlを触っていて、
とある処理を行うときに
Wide character in gzwrite at output-sample.pl line 20.
のように怒られたのでメモ。
エラー
やろうとしていたこと
やろうとしていたのはこれだけ
- プログラム内で適当な文字列を定義
- それをgzip形式でファイルを書き出す
use utf8; # 省略 # 怒られる処理 $fh->gzwrite($text);
実行時エラー
ただ単にperlを実行するだけで怒られる。
$ plenv exec perl output-sample.pl Wide character in gzwrite at output-sample.pl line 20
どうするか
対応は簡単で、内部文字列にutf8 encodeをすれば大丈夫です
use utf8; use Encode; # 省略 $text = encode('utf-8', $text); # 怒られる処理 # -> 怒られなくなる $fh->gzwrite($text);
おわり
あいかわらずperlは文字コード関連はよく何か起こるなー\(^o^)/