字符集中的特殊字符

7
  • iso-8859-1 是 utf-8 的一个合适的子集吗?
  • 那 iso-8859-n 呢?
  • 那 windows-1252 呢?

如果上述任何一个答案是否定的,那么不相交的字符是什么?我正在测试检测字符集的逻辑,并希望编写测试以验证检测是否正常工作。

2个回答

10

ISO-8859-1是否是UTF-8的一个合适子集?

ISO-8859-1(Unicode的前256个字符)的字符报告是UTF-8(每个Unicode字符)的一个合适子集。

然而,字符U+0080到U+00FF在这两种编码中的编码方式不同。

  • ISO-8859-1将每个字符从80FF分配给一个单字节
  • UTF-8将相同的字符编码为双字节序列C2 80C3 BF

那么iso-8859-n呢?

这些是包含614个不同字符的15种不同编码。其中一些字符出现在ISO 8859的多个“部分”中,而有些则没有。您需要更具体地说明。

我看到你的问题标记为ISO-8859-2。在-2中而不在-1中的字符是:
Ă㥹ĆćČčĎďĐđĘęĚěĹ弾ŁłŃńŇňŐőŔŕŘřŚśŞşŠšŢţŤťŮůŰűŹźŻżŽžˇ˘˙˛˝
那么windows-1252呢?
Windows-1252与ISO-8859-1非常相似,只是它用可打印字符替换了0x80-0x9F范围内很少使用的控制字符。在windows-1252中但不在ISO-8859-1中的字符是:
ŒœŠšŸŽžƒˆ˜–—‘’‚“”„†‡•…‰‹›€™

那么你的意思是 iso-8859-1 的曲目是 utf-8 曲目的一个适当子集?我相信这一点。我不确定的是 utf-8 曲目是否等于 unicode 曲目。我认为 utf-16 / utf-32 的目的是能够分别编码更多/全部的 unicode 字符。 - Sean Jezewski
2
啊..我查了一下。由于UTF-8可以将字符表示为多个字节,因此它可以表达所有的Unicode字符集。现在这很有意义。 - Sean Jezewski

1
Unicode是所有这些字符集的超集,也是几乎所有已建立的字符集的超集。您可以在此处找到所有这些字符集与Unicode代码点的映射列表:http://unicode.org/Public/MAPPINGS/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接