Perl 5.8.x における日本語コード変換のメモ。 Perl 5.8.x Unicode関連。 perl5.8のUnicodeサポート。 もーこれで理解できます?
元々 ARIB8単位符号体系 の追加記号集合(ARIB STD-B24 p1v2 Table7-20とか)を、 Webアプリ上で正しく扱うためにUnicodeサポートが必要だっただけなのに。
既存のPerlモジュールもCGI.pm内部コード問題 みたいなのが普通に放置されている現状。
とりあえずuse Encode;しただけで各モジュールの動作が変わってしまうとかマジでやめてくれないだろうか。 Perl 5.8以前でJcode.pmを使っていたように、明示的に呼び出した部分だけ適切な文字コード変換を行ってくれる だけでいいんだが、こんな簡単なことさえ実現することができない俺。PerlIOムッ殺す。
use open IO => ":utf8"; use open ":std";
しててもCGI上でprintすると Wide character in printって怒られる 。
頼みの綱のEncode::Guessは、検索用のform文に入力されるような短い単語だと頻繁に例外吐いて 落ちる... 。 Encode::Guess::guess_encodingで候補リストチェックしてると結構長い単語でも2つ以上候補があるし。
shiftjis or utf8 at /usr/lib/perl/5.8/Encode.pm line 186
これはほっとけば時間が解決するのか?もういっそ別のプラットホームに移行した方が早い気がしてきた。
Before...
_ こにしか [とりあえず、 sub unk2uni::utf8 { my ($str) = @_; my $de..]
_ もぽ [ちょろっと実験してみたけど、guess_encodingを2パラメータ形式で使って、一段目はshiftjis抜き、そ..]
_ もぽ [大雑把には my $decoder = guess_encoding($str, qw/utf8 euc-jp/)..]