WinAPI宽字符串函数是否支持由多个代码点组成的字符

问题描述:

WinAPI宽字符串函数是否支持由多个代码点组成的字符(所谓的代理对)?WinAPI宽字符串函数是否支持由多个代码点组成的字符

在文档中有什么关于它的吗?

+3

你有错误的术语。代理对包含两个代码**单元**以编码代码点。 – IInspectable

MSDN文章,Surrogates and Supplementary Characters说:

注意:Windows 2000引入了基本的输入,输出和增补字符 简单的排序支持。但是,并不是所有系统的组件都与补充字符兼容。

显然,我们是有点超出Windows 2000的

我的经验是,Windows并在实际上处理代理对,很好。我知道这里和那里存在一些错误,但是自从我解决这个问题以来已经有一段时间了。

简短回答:Windows支持代理对,但有可能在奇怪的角落有一些错误。

+0

作为一个例子,我不认为控制台可以处理代理对。每个字符单元由一个16位值表示,可能被视为UCS-2。另一方面,即使文件系统不是有效的UTF-16,文件系统也会接受任何16位代码单元的字符串(前提是它们不包含任何保留字符),如果将文件名转换为UTF-16会导致麻烦-8并返回。 –