首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Windows使用UTF-16 use?

为什么Windows使用UTF-16 use?
EN

Stack Overflow用户
提问于 2021-02-05 23:49:51
回答 1查看 3.1K关注 0票数 4

大多数Unix/POSIX/etc使用UTF-8作为文本表示,Windows使用UTF-16 of。

为什么会这样呢?有很多人说Windows是在UTF-8之前编写的(甚至是我们所知道的Unicode ) (123.),所以UTF-16 (甚至更早的时候,UCS-2)是他们拥有的最好的API,将现有的API转换为UTF-8将是一项荒谬的工作。

但这两种说法是否有任何官方来源?Unicode的官方MSDN页面认为,UTF-16甚至可能是可取的(尽管我自己并不同意):

这些函数使用UTF-16 (宽字符)编码,这是Unicode最常见的编码,也是Windows操作系统上用于原生Unicode编码的编码。

是否有任何官方说明(或从事该项目的工程师)解释选择UTF-16和的背后的理由:为什么Windows将/不会切换到UTF-8

EN

回答 1

Stack Overflow用户

发布于 2021-02-06 23:55:08

所谓“世界”,很可能意味着一切:操作系统(内部使用编码)、可执行文件(受支持编码)、文件格式(受支持编码)、文件系统(内部使用编码)等等。

Windows不会轻易切换,因为培根 (用于EXE、DLL和诸如此类)等基本文件格式的资源字符串只能处理WORD中的代码点。这种格式已经是补丁上的修补程序,添加另一个扩展可能比使用二进制资源块并将它们转换为UTF-8更烦人。

自从在Windows中引入Unicode以来,它的API被设置为每个字符的WORD;每个函数的大多数ANSI版本都只是调用该函数的宽版本的存根。对于UTF-8,它不能被强制使用,并且会与所有遗留代码中断--需要一个全新的API (或者每个函数都需要一个第三个版本)。只有很少的函数是“未来准备好的”,因为您可以告诉它们文本的编码方式(很明显,比如MultiByteToWideChar())。

S也是(因此间接支持UTF-16),我看不出它的新版本会发生什么变化--我敢打赌,一个全新的文件系统将被引入,它将淘汰NTFS,至少也会将所有文件名存储在UTF-8中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66072117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档