skillup

技術ブログ

Perl

Perlの文字コードについて その3

投稿日:2016年5月26日 更新日:

実際のPerlでの文字処理に関しては以前の記事でも書いたように下記の原則を守ればOKです。

  1.  原則1 外部から入力された文字列はデコードして内部文字列に変換する
  2.  原則2 外部へ出力する文字列はエンコードしてバイト文字列に変換する
  3.  原則3 ソースコードはUTF-8で保存し、utf8プラグマを有効にする

例えば外部からテキストファイル(内容は「あああ」というひらがなが入っているだけ)を読み込んで置換する処理を書くとします。

その場合コードは下記のようになります。

Perlのサイトで文字コードに対して下記のようなアドバイスを見かけました。

入り口で decode して,内部ではすべて flagged utf8 で扱い,出口で encode する.これがすべてです!とにかくこの基本方針をまもっていれば幸せになれます.

以前読んでも、そのときはあまり理解できませんでしたが、今回ようやくわかりましたね。

「業務に役立つPerl」以外にはこちらのリンクを参考にさせていただきました。

Perl: 文字コードとutf8フラグについて

なおutf8フラグがついているとData::Dumperを使った場合、文字化けします。文字化けしないためには

と入れてあげればOKです。

Data::Dumper の日本語文字化けと Syntax::Collector。
Data::DumperでUTF-8フラグつき文字列をエスケープさせないようにするには

-Perl
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Perlの文字コードに関して その2

前回のエントリーでPerlで文字列を扱う場合は内部文字列に変換しなくてはいけないことを学びました。 Contents1 内部文字列を使うわけ2 文字コードの変換 内部文字列を使うわけ ところで何のため …

no image

大容量データの取り込みについて

普段プログラムを組むときには可読性や保守性が大事なポイントになりますが、それと同じぐらい速度やメモリ効率なんかも大事です。 今回は少ないメモリでもなんとかできるような工夫をちょっとかいていこうかなと思 …

no image

PerlでのCSV取込+金額のカンマ表示

CSV取込の場合、単純にカンマで区切って配列を取得するだけのロジックを実装すると様々な弊害が起きます。 よく見られるパターンとしては下記のようなケースでしょう。 フィールドの中に、カンマがあった場合、 …

no image

Perl整形ツール Perl Tidy

PHPでコード整形ツールを使いましたが、Perlでも整形ツールがあったのでちょっとメモ。 Perl::Tidyというモジュールです。 公式 http://perltidy.sourceforge.ne …

no image

Perlでのデータベース差分チェックツール

Perlにてデータベースの差分が発生したときに簡単に差分を埋めるためのSQLを書くライブラリがあったので紹介。 ライブラリがない場合、cpan SQL::Translator でまずライブラリをCPA …