狐の王国


2007年08月31日(金) [過去の今日]

#2 Perlでそうそう文字化けしない文字コード変換のやり方まとめ

なんかチャット仲間のところで動いているPerlスクリプトなのだが、いくつかのサイトの情報を取得する代物。この日記も取得してるのだが、なぜかうちサイトだけ文字化けする。

で、コードを見せてもらったら、NKF.pmだのjcodd.plだのJcode.pmだの使ってて、それぞれのライブラリに文字コード判別任せてるみたい。ずいぶん昔のコードなんだろうなあ。

というわけで、自分のためのメモという意味もこめて、文字化けしにくい現代的な文字コード自動判別のやり方を書いておこう。

use Encode;
use Encode::Guess qw/ascii utf8 euc-jp shiftjis 7bit-jis/;

my $dec = Encode::Guess->guess($str);
if (ref $dec) {
    # utf8フラグを付けた文字列を取得
    my $utf8str = $dec->decode($str);

    # 上と同じだが別のやり方
    my $utf8str = Encode::decode($dec->name, $str);

    # Shift_JISに変換した文字列を取得
    my $sjis_str =  Encode::encode('shiftjis', Encode::decode($dec->name, $str));

    # $strの中味をEUC-JPに変換
    Encode::from_to($str, $dec->name, 'euc-jp');
}

ってな感じ。

EncodeもEncode::Guessもperlの標準モジュールになってるから、相当古いPerlでもなければ入ってるはず。

(@307)

この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ