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


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

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



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

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

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

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/02/19 18:11:10
  • 終了:2007/02/20 19:24:56

ベストアンサー

id:pmakino No.2

まきのっぴ回答回数355ベストアンサー獲得回数282007/02/20 00:07:49

ポイント35pt

はい、例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行程度の短い文章だから相対的に自動判別のコストが大きくなっているのであって、実際に使われるであろう長い文章では判別コストはもっと低くなると思われますが)


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

id:zachouR

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

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

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

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

2007/02/20 15:19:41

その他の回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/02/19 18:50:42

ポイント35pt

例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)

id:zachouR

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

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

2007/02/20 15:17:43
id:pmakino No.2

まきのっぴ回答回数355ベストアンサー獲得回数282007/02/20 00:07:49ここでベストアンサー

ポイント35pt

はい、例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行程度の短い文章だから相対的に自動判別のコストが大きくなっているのであって、実際に使われるであろう長い文章では判別コストはもっと低くなると思われますが)


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

id:zachouR

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

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

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

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

2007/02/20 15:19:41

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません