首先看如下代码:
$s="图盟科技 mapabc";
$t="济";

if($s=~/$t/)
{
print "good ";
}
else
{
print "bad ";
}
程序运行结果:
good
分析:由于“图”的右半边与“盟”的左半边合成了“济”字,故匹配成功。但在中文处理中这种情况是不合理的。
解决方案:引入 Encode 包。
use Encode;

$s="图盟科技 mapabc";
$t="济";

$length=length($t);# 2
$s = Encode::decode('GB2312',$s);
$t = Encode::decode('GB2312',$t);
$length=length($t);#1
if($s=~/$t/)
{
print "good ";
}
else
{
print "bad ";
}
现在的结果为:
bad
$s="图盟科技 mapabc";
$t="济";
if($s=~/$t/)
{
print "good ";
}
else
{
print "bad ";
}程序运行结果:
good
分析:由于“图”的右半边与“盟”的左半边合成了“济”字,故匹配成功。但在中文处理中这种情况是不合理的。
解决方案:引入 Encode 包。
use Encode;
$s="图盟科技 mapabc";
$t="济";
$length=length($t);# 2
$s = Encode::decode('GB2312',$s);
$t = Encode::decode('GB2312',$t);$length=length($t);#1
if($s=~/$t/)
{
print "good ";
}
else
{
print "bad ";
}现在的结果为:
bad
本文介绍了一个Perl脚本中出现的中文字符匹配问题,并提供了解决方案。通过使用Encode包进行字符集转换,确保了中文字符的正确匹配。

819

被折叠的 条评论
为什么被折叠?



