perlで日本語切り出し
日本語を含んだ文字列で文字を切り出す場合、切り出した文字列の間にASCIIコードが奇数個含まれていると、切り出したおしりが文字化けを起こすはず。でも、文字コードがEUC-JPで、perlで実現する場合、これを使えばなんとかなるようだ。
http://blog.nomadscafe.jp/archives/000152.html
sub jtruncate{
my($str,$n)=@_;
$n ||=200;
return $str if(length($str) <= $n);
my $substr = substr($str,0,$n-3);
if($substr =~ /\x8F$/ or $substr =~ tr/\x8E?xA1-\xFE// % 2){
chop $substr;
}
$substr .= "...";
return $substr;
}
$short = &jtruncate($long,$length);ちなみに、
tr/\x8E?xA1-\xFE//
ではなく、
tr/\x8E\xA1-\xFE//
のはずである。
また、なぜ$n-3になっているのかよくわからないのだが、これで実現可能だ。
#$nでよいと思うのだが。