【发布时间】:2018-05-25 17:23:49
【问题描述】:
perl 中有没有办法确定字符串的编码是utf-8 或cp1252 中的哪一个?
【问题讨论】:
-
如果在 0x80-0xFF 范围内至少有几个字节,如果它们在 CP1252 中,它们将很快产生无效的 UTF-8。请参阅建议的副本以了解如何检测。
-
我有人们从 Windows 或 Mac 创建的文件名,这意味着它是
cp1252或utf8,我需要一种方法来自动确定它是哪个。 -
让我这样说吧:UTF-8 对于有效序列的构成要素非常挑剔。每个随机字符串都是有效的 cp1252,但很少有随机字符串是有效的 UTF-8。当然,如果文件名不包含 0x80-0xFF 范围内的任何字符,则它是有效的 UTF-8 和 CP1252,并且在两种情况下语义相同。
-
当然,真正的方法是让提供给您的人不要遗漏重要信息。
-
我看不出这真的是重复的(标记的);虽然这是一个有用的页面,但它只是实现这一目标的一种方式。我添加了来自 ikegami 的答案的链接。找到更多会有所帮助。
标签: perl encoding utf-8 cp1252