perl中的编码问题

时间:2011-06-10 23:53:28

标签: perl encoding mojibake

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

有人可以解释为什么会这样吗?如何匹配并使用perl中的regexp将其替换为"

非常感谢。

2 个答案:

答案 0 :(得分:3)

ISO-8859-1是每字符一个字节的编码。花哨的Unicode双引号不在ISO-8859-1字符集中。所以你看到的是一个多字节字符,表示为ISO-8859-1字节序列。

要匹配这些奇怪的事情,请参阅perlunicode手册页,尤其是\ x {...}和\ N {...}转义序列。

要回答您的问题,请尝试\ x {201C}以匹配Unicode LEFT DOUBLE QUOTATION MARK和\ x {201D}以匹配RIGHT DOUBLE QUOTATION MARK。你在问题中错过了后者: - )。

[更新]

我应该提供我的参考资料......英国的一位优秀绅士在ASCII and Unicode quotation marks上有一页。普通的vanilla ASCII / ISO-8859-1双引号只是名为QUOTATION MARK。

答案 1 :(得分:-1)

可能是这个Old post会有所帮助..