tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【perl】`Wide character in xxxxx」`エラーが出るメモ

はじめに

久しぶりに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^)/