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でよいと思うのだが。