utf-8 - 哪些字符不能直接从Cp1252映射到UTF-8?

标签 utf-8 character-encoding utf codepages cp1252

我已经阅读了几个stackoverflow的答案,其中有些字符从Cp1252(又名Windows-1252;它们相同,不是吗?)转换为UTF-8时,不会直接映射(甚至是“不可映射”),例如此处:https://stackoverflow.com/a/23399926/2018047

有人可以对此提供更多的启示吗?这是否意味着如果我批量/批量将源代码从cp1252转换为utf-8,我会得到一些最终会变成垃圾的字符?

最佳答案

This is how Windows 1252 codepage looks like.

如您所见,字节0x81、0x8D,0x8F,0x90、0x9D没有分配任何内容。

如果您的输入文件包含这些字节,并且将其视为Windows 1252编码,则这些字节将被视为无效字符。在正常情况下,这意味着输入文件不在Windows 1252中。

所有其他字节编码可打印字符或控制字符,并且所有这些字符均以Unicode表示,因此可以明确地以UTF-8编码。

我不知道链接的答案试图声明什么,它的最后一段听起来像胡扯。

还有几句话,可能有助于您了解一些知识:


UTF-8和Windows 1252在ASCII之外彼此完全不兼容
这两种编码都永远不会将文本编码为某些字节值,每种情况下都是不同的
此外,某些字节序列在UTF-8中也无效
通常,如果您将文件视为包含以UTF-8或Windows 1252编码的文本,但是如果不包含,则会丢失和破坏数据


您可以在IDE或编辑器中选择文件的编码。建议仅使用UTF-8。您将必须转换现有的Windows 1252文件。

关于utf-8 - 哪些字符不能直接从Cp1252映射到UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324622/

相关文章:

C++ ShiftJIS 到 UTF8 的转换

c# - 编码为单字节扩展 ascii 值

java - IntelliJ - 输入未转义的 UTF-8 非 ASCII 字符

php - mysql中错误的字符集

java - itext 马拉地语(印度)语言显示问题

mysql - 没有将字符串隐式转换为哈希(smarter_csv gem,上传带有输入的文件)

python - 从API获取的字符串中的奇怪字符无法解码

c# - 如何检测文本文件的字符编码?

r - R生成的pdf图中损坏的UTF字符

python - 在python中将url编码的字符串(utf-8)转换为字符串?