- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Perl/日本語処理/文字コード操作 - Encode へ行く。
Encode モジュール
基本
- 日本語処理(マルチバイト対応substr()など)は、UTF8フラグ付きUTF8文字列に対して行う。
- (標準出力やファイルに)出力する文字列はUTF8フラグ付きであってはならない。UTF8フラグを落とす必要がある。
- 「UTF8フラグのないUTF8文字列」と「UTF8フラグ付きUTF8文字列」は別のもの。
- 一般的に言って、プログラムの最初にdecode()して、必要な処理をした後、プログラムの最後にencode()する。
関数
UTF8フラグ無しの文字列にUTF8フラグを付ける。
$utf8_flag_text = Encode::decode('FROM_ENCODE',$no_utf8_flag_text)
UTF8フラグ付きの文字列を指定した文字コードに変換してUTF8フラグを落す。
$no_utf8_flag_text = Encode::encode('TO_ENCODE',$utf8_flag_text)
UTF8フラグ無しの文字列の文字コードの変換する。
Encode::from_to($no_utf8_flag_text,'FROM_ENCODE','TO_ENCODE')
$no_utf8_flag_textは破壊的に変換される。
どの文字コードか調べる
$enc = Encode::Guess::guess_encoding($text,qw/euc-jp sjis/); # $textはUTFフラグ付きでも無しでもよい # utf-8はデフォルトなので指定は不要 print $enc->name,"\n"; # "euc-jp"などと表示される
UTF8フラグ付きの文字列の文字コードを変換する
$text = Jcode->new($text,'utf-8')->euc;
Jcodeを使う。この場合、UTF8からEUC-JPへの変換。$textはUTFフラグ付きでも無しでもよい。