1

我有一个包含 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”(复制和粘贴)

4

1 回答 1

3

可能您从未指定这STDIN是一个 utf-8 流。就像是

binmode STDIN, ":utf8";

可以解决这个问题。

于 2013-09-03T06:38:02.937 回答