Memoize2

Perl Encode::デコードとエンコードについてのメモ

  1. 外部文字列
    • Perl コードの外にある、人間が視覚的に文字列として見ているものの実体はバイト列である
    • このバイト列の種類に UTF-8 や Shift_JIS があるわけだ
  2. decode -> flagged utf8
    • Perl 内部で処理を行なうためには「flagged utf8」などと呼ばれる内部文字列として、外から入ってきたバイト列の塊を保持する必要がある
    • この工程(外部のバイト列から内部文字列に変換する工程)をデコードという。つまり Perl を主体にして、 Perl が解読できる形式に変換するという意味で「デコード」なのだ
  3. flagged utf8 -> encode -> 外部文字列
    • Perl での処理後、外に出力するときは、出力先の環境にマッチした文字コード(=バイト列)に変換する必要がある。これがエンコードである。
    • この出力時のエンコードを怠ると例の「Wide character in print at ...」が出力されてげんなりするんだね

「デコード」「エンコード」という言葉が(考えてみれば当然なのだが...) Perl を主体にして言われている、ということを頭に置いて各種ドキュイメントを読むと悩まなくて済む。

参考:

Encodeでラクラク日本語処理 - JPerl Advent Calendar 2009 Encode::find_encoding の基本的な使い方や、PerlIOレイヤーについての解説も載っていてとても参考になる。

 

Last modified: 2016-12-16

Page Top

Index

Bw

Author: 中村 心 Shin Nakamura, Email: sn(at)i.basicwerk.com


© Shin Nakamura/BasicWerk 2008 - 2017