【发布时间】:2013-09-03 05:42:09
【问题描述】:
我有一个包含 unicode 字符的大列表,我想用以下代码与一些 ASCII 字符交换(此代码做了更多的事情):
while ($Zeile=<STDIN>)
{
@Zeile=split('\t',$Zeile);
$i=0;
foreach(@Zeile)
{
if ($i>1)
{
$entry=$_;
$entry=~s/\(Details\)/ /;
$entry=~s/\x{00BC}/.25/;
$entry=~s/\x{00BD}/.5/;
$entry=~s/\x{00BE}/.75/;
print($entry);
}
$i++;
}
}
但在结果中会插入一个字符,它不是 unicode 字符。例如“7½”更改为“7�.5”(复制和粘贴)
【问题讨论】:
-
perlunicode 页面上的第一个警告是 "为了保持向后兼容性,Perl 不会打开完整的内部 Unicode 支持,除非指定了编译指示使用功能 'unicode_strings'。(这如果您使用 use 5.012 或更高版本,则会自动选择。)如果不这样做可能会引发意外的意外。"您是否启用了这些 pragma 中的任何一个?
-
插入 [code] 使用功能 'unicode_strings';在第一行使用 utf8[/code] 不会改变任何东西 :( [code]use 5.012;[/code] 会产生错误