3

我还没有找到太多(简明)关于何时使用 Unicode 的信息。我知道很多人说最好的做法是始终使用 Unicode。但是 Unicode 字符串确实有更多的内存占用。我是否正确地说Unicode必须在 以下情况下使用

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

我认为,如果有人解释了 Unicode 实际发生的事情的基础知识(简明扼要),那将是有益的……我是否正确地说,当以下情况变得混乱时:

  • 物理(字节)字符串使用与发送者不同的字符串表示(代码页,其他......这已经是详细的,虽然很有趣)。

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

PS很棒的网站

4

3 回答 3

5

始终使用Unicode,它将为您和其他人节省很多痛苦。

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

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

于 2011-10-24T10:08:51.917 回答
4

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

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

Unicode 编码没有什么特别之处,它们只是在位表示上稍微复杂一点,因为它们必须编码更多的字符,同时还要努力提高空间效率。有关此主题的详细介绍,请参阅每个程序员绝对、肯定需要了解的关于使用文本的编码和字符集的知识。

于 2011-10-25T01:49:42.463 回答
1

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

于 2011-10-25T12:34:09.253 回答