Apacheエラーログ Malformed UTF-8 character (byte 0xff) in eval "string" at (eval **) line *

  • プログラム
my $komoji = 'aiueoAIUEO0123456789,./%-';
print "komoji : ".$komoji."<br>";
my $oomoji = Jcode->new($komoji)->tr('a-zA-Z0-9-!(),./%%','a-zA-Z0-9!−(),./%')->sjis;
print "oomoji : ".$oomoji."<br>";
Malformed UTF-8 character (byte 0xff) in eval "string" at (eval **) line *
  • 出力
komoji : aiueoAIUEO0123456789,./%-
oomoji : aiueoAIUEO0123456789,./%-

「-」だけ置換されていない。。
Jcode.pm側で「-」がエスケープされてエラーを起こしている様子。

  • 解決方法
my $komoji = 'aiueoAIUEO0123456789,./%-';
print "komoji : ".$komoji."<br>";
my $oomoji = Jcode->new($komoji)->tr('a-zA-Z0-9!(),./%%','a-zA-Z0-9!(),./%')->tr('-','−')->sjis;
print "oomoji : ".$oomoji."<br>";
  • 出力
komoji : aiueoAIUEO0123456789,./%-
oomoji : aiueoAIUEO0123456789,./%−

おっイケた。

  • 参考ページ

Jcode Respect - a geek born in Tomakomai