<div class="section">
Perlのdecodeを使って [utf-8] → [euc-jp] に変換するときに変なエラーが起こったので、その対策をメモ。
use Encode; ##なんかもろもろ書いてあるとして my $data = 'ハローワールド' #utf-8の文字列 $data = decode('utf-8', $data); $data = encode('euc-jp', $data);
これを実行したところ、以下のエラーが出た。
Cannot decode string with wide characters #この後ろにEncode.pmのエラー行がでる
調べたところ、UTF-8フラグが立っているとこのエラーがでてしまうらしい。
これを回避するために、decodeを呼び出す前にUTF-8フラグをおろせばいいようです。
Encode::_utf8_off($data); $data = decode('utf-8', $data); $data = encode('euc-jp', $data);
これで成功する。
_utf8_offでUTF-8フラグをおろすことができるみたい。
参考
http://d.hatena.ne.jp/libkazz/20070605/1181026439