Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl中的编码问题_Perl_Encoding_Mojibake - Fatal编程技术网

perl中的编码问题

perl中的编码问题,perl,encoding,mojibake,Perl,Encoding,Mojibake,我有一个编码问题,想寻求帮助。我注意到,如果我选择“UTF-8”作为编码,则(至少)有两个双引号“和”。但是当我选择“ISO-8859-1”作为编码时,我看到后一个双引号变成了”,或者有时,例如和 有人能解释一下为什么会这样吗?如何在perl中使用regexp匹配“并将其替换为” 非常感谢。ISO-8859-1是每个字符一个字节的编码。奇怪的Unicode双引号不在ISO-8859-1字符集中。因此,您看到的是一个多字节字符,表示为ISO-8859-1字节序列 要匹配这些奇怪的东西,请参阅手册页

我有一个编码问题,想寻求帮助。我注意到,如果我选择“UTF-8”作为编码,则(至少)有两个双引号
。但是当我选择“ISO-8859-1”作为编码时,我看到后一个双引号变成了
,或者有时,例如

有人能解释一下为什么会这样吗?如何在perl中使用regexp匹配
并将其替换为


非常感谢。

ISO-8859-1是每个字符一个字节的编码。奇怪的Unicode双引号不在ISO-8859-1字符集中。因此,您看到的是一个多字节字符,表示为ISO-8859-1字节序列

要匹配这些奇怪的东西,请参阅手册页,尤其是\x{…}和\N{…}转义序列

要回答您的问题,请尝试\x{201C}匹配Unicode左双引号,并\x{201D}匹配右双引号。您的问题中遗漏了后者:-)

[更新]


我应该提供我的参考资料……英国的一位好先生有一个页面。普通的ASCII/ISO-8859-1双引号就是引号。

也许这会有所帮助。

谢谢你的回答。:)那么另一个普通双引号的名称是什么?@羌:是的。我添加了一个更新链接,我应该这样做首先包括使用字符名的最佳方法:full“
,以及类似的
\N{EFT双引号}
等等。我不喜欢代码中的幻数,0x201C肯定就是这样。@Qiang:如果你想知道代码点的名称,你应该知道。那里还有很多与unicode相关的东西。定义“选择UTF-8作为编码”。你是指源代码使用utf8
,还是使用OpenQW(:std:utf8)用于流或其他所有内容?另请参阅。