[Perl]
Wide character in print atというエラーはUTF-8フラグが付いた文字列をprintしようとしているからである。なのでUTF-8フラグを取り外してからprintすればエラーがでなくなります。UTF-8フラグが付いているかどうかはutf8::is_utf8を使用すればよい。
#UTF8フラグが付いているかの確認
print utf8::is_utf8($string) ? 'flagged' : 'no flag';
utf8::is_utf8では実際の文字列がUTF-8かどうかではなく、あくまでフラグがついているかどうかを確認します。そのため、UTF-8の文字列もフラグが付いていなければ上記の出力はno flagとなります。またutf8::is_utf8はuseしなくても使用できる。useすると全然違う意味あいになるので注意。
UTF-8フラグが付いていたら、encodeを使用してフラグをはずします。以下の例では$stringをutf-8に変換して出力します。
print encode('utf-8', $string);
またPerlIO layerを使用する方法もあります。その他にも-Cコマンドラインスイッチを入れれば自動判別をするらしいです。
binmode(STDOUT, ":utf8");
[関連記事]
Encode::Guess - 文字コードの判別
[参考]
Perl 5.8.x Unicode関連
広告
|
新版Perl言語プログラミングレッスン入門編 ¥ 2,835 / 売り上げランク: 9110 / 512 ページ 非常に分かりやすい。 今までにも様々な参考書に目を通してきていたが、その中でもこの本かなり読みやすく、丁寧に書かれていた。 初心者には特にお勧め。 初心者以外の方でも軽く目を通す価値はあると思う。 |
|
Code Reading―オープンソースから学ぶソフトウェア開発技法 ¥ 5,460 / 売り上げランク: 9887 / 523 ページ CodeCompleteとCodeReadingを併せて読むとよいと、 組込み系のSESSAMEプロジェクトのメーリングリストと、 OS系のTOPPERSプロジェクトのメーリングリストで推薦を受けました。 CodeCompleteは読んだことがあったので、CodeReadingを読んでいます。 オープンソースを仕事にしているので、たいへん役立っています。 MISRA-Cは研修で取り上げてきたので、本書も研修の資料としても取り上げるように準備中です。 |
|
初めてのPerl ¥ 3,780 / 売り上げランク: 11741 / 379 ページ いわゆるリャマ本として知られる定番書 初めてのとあるが初心者向きではないと思う。 よくできてはいるが、、。 |



