Rem*_*eau 7
Windows 是最早采用 Unicode 的操作系统之一。那时,确实还没有 UTF-8,而 UCS-2 是 Unicode 最常用的编码。所以 Windows 最初的 Unicode 支持是基于 UCS-2。
当 Unicode 超过 UCS-2,UTF-8 和 UTF-16 变得更流行时,Windows 在不破坏大量现有代码1的情况下切换到 UTF-8 为时已晚,但是 UTF-16 向后兼容UCS-2,因此微软能够以最小的努力切换到 UTF-16,并且对现有用户代码几乎没有更改。
1:现在,20 多年后,在 Windows 10 中,微软才刚刚开始真正开始在 Win32 API 层支持 UTF-8 ,但该功能仍处于试验阶段,必须由用户手动启用或通过应用程序清单在每个应用程序的基础上进行,并且通常需要更改用户代码以利用支持 UTF8 的 API,而不是基于 UTF16 的 API。
cit*_*lao 5
Raymond Chen 实际上有一个“官方”答案——或者至少是来自 Microsoft 来源的答案(强调添加):
Windows 在大多数其他操作系统之前采用了 Unicode。[需要引用] 因此,Windows 对许多问题的解决方案与那些等待尘埃落定的人采用的解决方案不同。¹这方面最显着的例子是Windows 使用 UCS-2作为 Unicode 编码。这是 Unicode 联盟推荐的编码,因为 Unicode 1.0 仅支持 65536 个字符。² Unicode 联盟五年后改变了主意,但到那时对于已经发布 Win32、Windows NT 3.1、Windows 的 Windows 来说已经太迟了NT 3.5、Windows NT 3.51 和 Windows 95,均使用 UCS-2 .³
— Visual C++ 中 Unicode printf 样式格式说明符的悲惨历史
换句话说,Remy Lebeau 和 AmigoJack 都是对的——Windows 在 UTF-8 被推荐(甚至存在?)之前就采用了 Unicode;当时,UCS-2 是标准,所以这就是 Windows 选择的。
当我们意识到整个人类语言需要超过 65,536 个字符(现在也需要表情符号)时,Windows 已经发布了多个版本,要更改将非常不切实际(如果不是不可能的话)。
感谢所有为这个问题提供答案的人!由于我一直在寻找官方来源,因此我将其标记为答案(尽管我将其标记为社区 wiki,因为它是一个合并)。更多推荐
Windows,UTF
发布评论