• 追加された行はこの色です。
  • 削除された行はこの色です。
* Encode.pmを使った文字コード変換 [#n2533631]

** 日本語処理の流れ [#q08a182a]
例えば、EUCの文字列を受け取り、加工し、SJISへの変換する場合、

 [EUC文字列]→ [UTF8フラグ付きUTF8文字列]→[加工されたUTF8フラグ付きUTF8文字列]→[SJIS文字列]

のような流れになる。

** 基本 [#tc71b44d]

- 日本語処理(マルチバイト対応substr()など)は、UTF8フラグ付きUTF8文字列に対して行う。
- (標準出力やファイルに)出力する文字列はUTF8フラグ付きであってはならない。UTF8フラグを落とす必要がある。
- 「UTF8フラグのないUTF8文字列」と「UTF8フラグ付きUTF8文字列」は別のもの。

** 日本語処理をするためのプラグマ、モジュール [#k4d74978]
:use encoding 'ENCODE'|特定の文字コード(含むUTF8)で書かれたPerlスクリプトで日本語処理をする。
:use utf8|UTF8で書かれたPerlスクリプトで日本語処理をする。
:Encode::decode('FROM_ENCODE',$no_utf8_flag_text)|UTF8フラグなしの文字列を、その文字の文字コードを指定して、UTF8フラグを付ける。
:Encode::encode('TO_ENCODE',$utf8_flag_text)|UTF8フラグ付きの文字列を指定した文字コードに変換する(UTF8フラグを落す)
:Encdoe::from_to($no_utf8_flag_text,'FROM_ENCODE','TO_ENCODE')|UTF8フラグのない文字列の文字コードの変換する。
:use openもしくは3つの引数を取るopen()|日本語で書かれたファイルを読み書きする。

** 使いどころ [#scbb4cab]
:Perlスクリプト内で日本語を直に書いて($text='あああ')処理を行う場合|use encodingもしくはuse utf8
:日本語処理が必要な個所があった場合|Encodeモジュール
:日本語ファイルを読み書きする時|use openもしくは3つの引数を取るopen()

*** 注意点 [#sde2f691]
機能的にはEncodeモジュールがあれば、use encodingやuse utf8は不要。ただし、Perlスクリプト内で日本語を直に書く量が多い場合、use encodingやutf8してスクリプト内全体にUTF8フラグを付けた方が楽。

** 関連 [#ub0714c4]
- [[use encoding>Perl/use encoding]]
- [[use utf8>Perl/use utf8]]
- [[Perl/日本語処理/ファイルの入出力]]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS