gpt4 book ai didi

Perl 的使用编码编译指示破坏 UTF 字符串

转载 作者:行者123 更新时间:2023-12-04 10:21:14 25 4
gpt4 key购买 nike

我对 Perl 和编码编译指示有疑问。

(我在任何地方都使用 utf-8,在输入、输出、perl 脚本本身中。我不想使用其他编码,永远不会。)

然而。当我写

binmode(STDOUT, ':utf8');
use utf8;
$r = "\x{ed}";
print $r;

我看到字符串“ í”(这是我想要的 - 什么是 U+00ED unicode char)。但是当我像这样添加“使用编码”编译指示时
binmode(STDOUT, ':utf8');
use utf8;
use encoding 'utf8';
$r = "\x{ed}";
print $r;

我所看到的只是一个盒子字符。为什么?

此外,当我添加 Data::Dumper 并让 Dumper 像这样打印新字符串时
binmode(STDOUT, ':utf8');
use utf8;
use encoding 'utf8';
$r = "\x{ed}";
use Data::Dumper;
print Dumper($r);

我看到那个 perl 更改了字符串 "\x{fffd}" .为什么?

最佳答案

use encoding 'utf8'被打破。而不是解释\x{ed}作为代码点 U+00ED,它将其解释为单字节 237,然后尝试将其解释为 UTF-8。这当然失败了,所以它最终用替换字符 U+FFFD 替换它,字面意思是“�”。

只要坚持 use utf8指定您的来源是 UTF-8,和 binmodeopen pragma指定文件句柄的编码。

关于Perl 的使用编码编译指示破坏 UTF 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com