窗口 – 为什么UTF-8不允许作为“ANSI”代码页?

前端之家收集整理的这篇文章主要介绍了窗口 – 为什么UTF-8不允许作为“ANSI”代码页?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Windows _setmbcp功能允许任何有效的代码页…

(except UTF-7 and UTF-8,which are not
supported)

好的,不支持UTF-7是有道理的:字符具有非唯一的表示,并且引入复杂性和安全风险。

但为什么不UTF-8?

据了解,“API”版本的Windows API函数将其参数转换为UTF-16,调用等效的“W”函数,并将输出中的任何字符串转换为“ANSI”。这是我一直在做的手动。那么为什么Windows不能为我做呢?

“ANSI”代码页基本上是遗产:Windows 9X时代。无论如何,所有现代软件都应该是Unicode(也就是UTF-16)。

基本上,当Ansi代码页的内容最初设计时,UTF-8甚至没有发明,所以支持多字节编码是相当随意的(即大多数Ansi代码页是单字节,除了一些东亚代码页这是一个或两个字节)。无论如何,在UTF-16中进行所有新开发时,增加对“正确”多字节编码的支持可能被认为是不值得的。

猜你在找的Windows相关文章