« 2005年8月16日 | メイン | 2005年8月28日 »

2005年8月17日

日本語文字コード変換に関する覚え書き

Category: Perl

Perl 5.8 からは Encode モジュールに jcode の成果が取り込まれているのでそれを利用すればよいと言えばよいのですが、まだ 5.6.x 以前の環境も多いので jcode.pl か Jcode.pm を使うことになる。CGI を配布する身としては Jcode.pm の方がよいのですがサーバーにない場合もあるのでどちらでも使えることを考慮したい。そこで

#!/usr/bin/perl my $Having_Jcode = eval 'use Jcode; 1' ? 1 : 0; require 'jcode.pl' unless ( $Having_Jcode ); # Jcode モジュールがない場合 jcode.pl を読み込む # 文字コード変換の設定 my $JcodeConvert = \&jcode::convert; my $JcodeGetcode = \&jcode::getcode; if( $Having_Jcode ){ $JcodeConvert = \&Jcode::convert; $JcodeGetcode = \&Jcode::getcode; } # 実際に変換する my $word_before = 'ほげ'; my $word_after = &$JcodeConvert( \$word_before, 'euc' );

のようにリファレンスを使ってあげればある方を使ってくれるようになる。まぁ、これは Jcode.pm と jcode.pl に引数の互換性があるから使える技ですね。

ところで、あまり短いものを変換しようとすると文字コードの推測がうまくいかない場合があるので、可能な限り変換前の文字コードもきちんとしてあげた方がよいと最近感じてきています。

Jcode.pm をローカルにおけばいいやん!という意見がありそうですが、そうすると配布物が多くなったり導入の敷居が高くなったりなので却下します :-p

投稿者 kato : 10:53 | コメント (0) | トラックバック