【发布时间】:2011-02-25 11:05:34
【问题描述】:
检查 UTF-16 和 UTF-8 的属性,我找不到任何理由更喜欢 UTF-16。
但是,查看 Java 和 C#,它看起来像那里的字符串和字符默认为 UTF-16。我在想这可能是出于历史原因,或者可能是出于性能原因,但找不到任何信息。
有人知道为什么这些语言选择 UTF-16 吗?我也有任何正当理由这样做吗?
编辑:同时我还找到了this answer,它看起来很相关并且有一些有趣的链接。
【问题讨论】:
-
除了我的回答之外,我想说 .NET/C# 选择 UTF-16 是因为这是 Windows 的“本机”编码:如果您使用相同的本机 Windows,则与本机 Windows 互操作会更容易编码。
-
您选择编码的目的是什么? UTF-16 是内存中字符串处理的合理选择,
wchar_t在 Windows 上将是 UTF-16,在其他地方通常是 UTF-32。但对于在线协议和文件存储,UTF-8 几乎总是最佳选择。 -
@codeka:我同意(给了你 +1),但也有人可能会问“为什么 Windows 的原生编码是 UTF-16 而不是 UTF-8?”。
-
qt c++ 框架也使用 utf-16 处理字符串
-
首选 UTF-16,如果它是您的操作系统或编程语言的本机。这主要是指 Windows、C# 和 Java。如果 UTF-8 是您的操作系统或编程语言的本机,或者您的编程语言实际上没有本机编码,请选择 UTF-8。这意味着 *nix 和 Mac OS X、C、C++。如果您从一开始就跨平台,那么在 C/C++ 的情况下,让 UTF-8 在 Windows 上正常工作似乎比在 *nix 上到处使用 UTF-16 更容易。 Perl 旨在处理所有编码,但隐式转换会导致许多错误。 JavaScript 包括 node.js 使用 UCS-2!!
标签: c# java unicode utf-8 utf-16