何时使用Unicode(非Unicode除外!)

何时使用Unicode(非Unicode除外!),unicode,non-unicode,Unicode,Non Unicode,我还没有找到很多关于何时确切使用Unicode的(简明)信息。我知道很多人说最好的做法是始终使用Unicode。但是Unicode字符串确实占用了更多的内存。我说的Unicode只有在 将某些内容打印到屏幕而不是本地(例如调试)使用 通常,通过网络发送任何类型的文本,两端位于不同的地区/国家/地区 当你不确定该用哪一个的时候 我认为,如果有人解释一下Unicode的基本原理(简明),那将是有益的。。。我说的事情变得一团糟是对的吗 物理(字节)字符串使用与发送方不同的字符串表示(代码页,其他

我还没有找到很多关于何时确切使用Unicode的(简明)信息。我知道很多人说最好的做法是始终使用Unicode。但是Unicode字符串确实占用了更多的内存。我说的Unicode只有在

  • 将某些内容打印到屏幕而不是本地(例如调试)使用
  • 通常,通过网络发送任何类型的文本,两端位于不同的地区/国家/地区
  • 当你不确定该用哪一个的时候
我认为,如果有人解释一下Unicode的基本原理(简明),那将是有益的。。。我说的事情变得一团糟是对的吗

  • 物理(字节)字符串使用与发送方不同的字符串表示(代码页,其他…这已经很详细了,尽管很有趣)发送到机器
上下文在编程语言(比如C++)中使用Unicode,但我希望这个问题的答案可以用于任何编码情况。
另外,我知道Unicode和NLS不是一回事,但是说NLS意味着使用Unicode是正确的吗


附言:非常棒的网站

始终使用,它将为你和其他人省去很多痛苦

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


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

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

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


Unicode编码没有什么特别之处,它们的位表示稍微复杂一点,因为它们必须编码更多的字符,同时还要尽量节省空间。有关此主题的详细介绍,请参阅。

我有一个小实用程序,有时有助于了解c与c之间的差异字符编码..如果将
粘贴到
原始(UTF-8)中
field您将看到它是由不同编码中的不同字节序列表示的。正如其他两个好答案所描述的,一些非unicode编码根本不能表示它。

完全正确,编码为UTF-8的ASCII字符串不需要更多空间,这是大多数unicode文本在磁盘上传输或存储的方式。@Joachim Sauer:所以,如果我在数据库中使用unicode支持的数据类型,它们不会比普通字符串占用更多空间?我在这里问了一个类似的问题@codecool:这取决于数据库使用的编码方式。如果它使用UTF-8,那么它就不需要更多空间来存储也可以用ASCII表示的文本(即大多数英文文本)@JoachimSauer mysql将UTF-8存储在一个足够大的空间中,以存储该数量字符的最大大小;也就是说,它占用的空间是ASCII或拉丁语-1的3到4倍(3表示utf8,4表示utf8mb4)。看起来不错,但无法从办公室进行检查。遗憾的是:Trend Micro OfficeScan事件URL阻止了您尝试访问的URL,这是一个潜在的安全风险。Trend Micro OfficeScan已根据网络安全策略阻止了此URL。URL:风险级别:危险详细信息:已验证欺诈页面或威胁源awardspace只是一个免费的托管网站。我猜过去有人在那里做过一些鬼鬼祟祟的事情