何时使用Unicode(除了非unicode!)

时间:2011-10-24 10:04:08

标签: unicode non-unicode

我没有找到关于何时使用Unicode的更多(简明)信息。我知道很多人说最佳实践是始终使用Unicode。但是Unicode字符串DO具有更多的内存占用。我是否正确地说 必须 >

  • 将某些内容打印到本地以外的屏幕(例如调试)使用。
  • 通常,通过网络发送任何类型的文本,其中两端位于不同的区域/国家
  • 当您不确定使用哪个

我认为,如果有人解释了基础知识(简明)有关Unicode的实际情况,那将是有益的...我是正确的说,事情变得混乱:

  • 物理(字节)字符串使用不同于发件人的字符串表示(代码页,其他......这已经很详细,但有趣)发送到计算机。

上下文在编程语言中使用Unicode(比如C ++),但我希望这个问题的答案可以用于任何编码情况。
另外,我知道Unicode和NLS不是一回事,但说NLS意味着使用Unicode是否正确?

P.S。很棒的网站

3 个答案:

答案 0 :(得分:5)

始终使用Unicode,它会为您和其他人带来很多痛苦。

您可能感到困惑的是编码问题。 Unicode字符串必须占用比等效ASCII(或其他编码)字符串更多的内存,这在很大程度上取决于所使用的编码。

有时“Unicode”用作“UCS-2”或“UTF-16”的同义词。严格来说,使用错误,因为“Unicode”是定义字符集及其unicode代码点的标准。它确实定义到字节(或单词)的映射。 UTF-16,UTF-8和其他编码接管将字符映射到具体字节的工作。

答案 1 :(得分:4)

Unicode的美妙之处在于它让您摆脱了限制和许多麻烦。 Unicode是迄今为止最大的字符集,它使您能够实际编码和使用当今使用的任何中途主流语言的几乎任何字符。对于任何其他字符集,您需要考虑它是否可以实际编码字符。 Latin-1不能编码字符“あ”,Shift-JIS不能编码字符“ڥ”等。只有当你非常肯定你永远不需要基本的拉丁语/阿拉伯语/日本语/其他任何字符子集时,你应该选择一种专门的编码,例如Latin-1,BIG-5,Shift-JIS或ASCII。 / p>

Unicode是最通用的字符集,因此是一个很好的标准。

Unicode编码没有什么特别之处,它们的位表示只是稍微复杂一些,因为它们必须编码更多的字符,同时仍然试图节省空间。有关本主题的详细介绍,请参阅What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text

答案 2 :(得分:1)

我有一点实用工具,有时候有助于查看字符编码之间的区别。 http://sodved.awardspace.info/unicode.pl。如果您将ö粘贴到Raw (UTF-8)字段中,您会看到它由不同编码的不同字节序列表示。正如其他两个好的答案所描述的那样,一些非unicode编码根本无法代表它。