作者liyih ()
看板Perl
标题Re: [问题] utf8下 中文 substr 要如何才能正确撷字??
时间Tue Jun 2 19:55:24 2009
※ 引述《bmyone (Y)》之铭言:
: 我有试过先加use utf8;
: 不过输出的结果还是会有错误
: 最後一个字可能会变乱码之类的
: 请问各位前辈们,有什麽比较好的做法吗?
可以使用 Encode 来处理,这样计算长度的单位是用 character 而不是 byte。
建议 #perldoc perlunitut 阅读一下说明。
或参考下面的程式看看
----------------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Data::Dump;
my $str = "123汉字abc一二三";
print 'length - ', length($str), " bytes\n";
print 'length - ', length(decode("utf-8", $str)), " characters\n";
print 'substr($str, 0, 2) - ', substr($str, 0, 2), "\n";
print 'substr($str, 0, 3) - ', substr($str, 0, 3), "\n";
print 'substr($str, 0, 4) - ', substr($str, 0, 4), "\n";
print 'substr($str, 0, 5) - ', substr($str, 0, 5), "\n";
print 'substr($str, 0, 6) - ', substr($str, 0, 6), "\n";
print 'substr($str, 0, 4) - ', encode("utf-8",
substr(decode("utf-8", $str), 0, 4)
), "\n";
print Data::Dump->dump($str), "\n";
print Data::Dump->dump(decode("utf-8", $str)), "\n";
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.64.233.69
1F:推 bmyone:可以了~谢谢 06/03 11:20