人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perl 上で Jcode.pm を利用しています。

任意のコードに変換する場合、

例1
&Jcode::convert(\$line, "euc");



例2
&jcode::convert(\$line, "euc", "sjis");

では、例2の方が確実なのでしょうか?

どなたか教えてください。

●質問者: zachouR
●カテゴリ:インターネット ウェブ制作
✍キーワード:EUC Perl pm SJIS コード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント

例2は

&Jcode::convert(\$line, "euc", "sjis");

ですよね?

2の方が確実です。

入力文字列指定を省略した場合、getcode で推測を行いますが少なくとも日本語のコード判別率は 100% ではありません。

もし事前に入力文字列のコードが分かっているなら、指定したほうが確実です。

また、getcode を使わなくて済む分早いです。(たぶんちょっとだけ)

http://search.cpan.org/dist/Jcode/Jcode/Nihongo.pod#(12469)(12502)(12523)(12540)(12481)(12531)

◎質問者からの返答

回答ありがとうございます

コード判別はややこしいですね、、、


2 ● まきのっぴ
●35ポイント ベストアンサー

はい、例2の方が確実です。

自動判別は完全ではありませんので、失敗して文字化けを起こすことがあります。

例えばJcode.pm の文字コード自動判定にて、自動判別に失敗した事例が挙げられています。


また、自動判別するとその分遅くなります。

Encode, Text::Iconv, Unicode::Japanese, Jcode, jcode.pl のベンチマーク比較によれば、

「ASCII, 漢字、カタカナ、ひらがなの混じったtext」という短い文章を1秒間にどれだけ SJIS に変換できるかというテストを行ったところ、

変換元を指定した場合 (Jcode::convert(fixed-sjis-pp206)) → 21,739回/秒

変換元を自動判別した場合 (Jcode::convert(guess-sjis-pp206)) → 5,945回/秒

と、4倍近い速度差が出ています。

(もっともこのテストでは1行程度の短い文章だから相対的に自動判別のコストが大きくなっているのであって、実際に使われるであろう長い文章では判別コストはもっと低くなると思われますが)


とにかく、変換元の文字コードがあらかじめ判っているなら面倒でも指定した方が良いです。

◎質問者からの返答

回答ありがとうございます。

実は変換元の文字コード、、、わからないんです(;;)

かなりランダムにソースをひっぱってくるものですから、、、。

これは、しょうがないとしてある程度はあきらめることにします(;;)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ