skillup

技術ブログ

Perl

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

投稿日:

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

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

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

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

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

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

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

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

https://bayashi.net/wiki/perl/unicode#utf8.E3.83.95.E3.83.A9.E3.82.B0_ON_.E3.81.A8_OFF_.E3.81.AE.E6.96.87.E5.AD.97.E5.88.97.E9.80.A3.E7.B5.90

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

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

http://qiita.com/bunzaemon/items/e309b90cb8791f9d8349
http://ku.ido.nu/post/90223903914/avoiding-data-dumper-dumps-utf8-flagged-values-in-escape

-Perl
-, , ,

執筆者:


comment

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

関連記事

no image

Perlでの変数、配列、ハッシュに関して ~リファレンスなど~

こちらのブログでプログラミングを教えてるんですけど、プログラミングの基本といえば配列とオブジェクト指向だと思います。 もちろん、これ以外のことも大切ですが、初心者のうちはここを抑えておけばとりあえず何 …

no image

Perl整形ツール Perl Tidy

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

no image

Vagarant+Eclipse(Perl)での作業環境構築

現在の案件でPerlの改修があるんですが、windowsだとモジュールの依存関係でうまくコンパイルできなかったりといろいろとトラブルが起こったんで、今はやりの仮想環境でやることに。 まだ完ぺきではない …

no image

Perlの配列、ハッシュ系の処理 (mapを中心に)

昨日書いたgrepに続き、mapについて調べたことを書いてみました。 Contents1 mapとは?2 mapを使った配列処理 基本3 mapを使った配列、ハッシュ処理 ハッシュを含む多次元配列への …

no image

Perlの配列、ハッシュ系の処理(grepを中心に)

Perlの配列やハッシュで便利そうな処理をgrepを中心にいろいろ調べてみました。 Contents1 grepとは?2 grepを使った配列処理 基本3 grepを使った配列処理 ハッシュを含む多次 …