【问题标题】:Does WinAPI wide-string functions support characters that consist of more than one code pointWinAPI 宽字符串函数是否支持包含多个代码点的字符
【发布时间】:2016-01-22 20:38:15
【问题描述】:

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

文档中有关于它的内容吗?

【问题讨论】:

  • 你用错了术语。代理对由两个代码单元组成,用于编码一个代码点。

标签: windows winapi unicode utf-16


【解决方案1】:

MSDN 文章Surrogates and Supplementary Characters 说:

注意 Windows 2000 引入了对基本输入、输出和 补充字符的简单排序。但是,并非所有系统 组件与补充字符兼容。

显然,我们已经超越了 Windows 2000。

我的经验是,Windows 实际上可以很好地处理代理对。我知道这里和那里都有一些错误,但我已经有一段时间没有跟上这个问题了。

简答:Windows 支持代理对,但可能在奇数角落存在一些错误。

【讨论】:

  • 例如,我认为控制台不能处理代理对。每个字符单元由单个 16 位值表示,可能被视为 UCS-2。另一方面,文件系统接受任何 16 位代码单元字符串(只要它们不包含任何保留字符),即使它们不是有效的 UTF-16,如果将文件名转换为 UTF 可能会导致问题-8 并返回。
猜你喜欢
  • 2014-12-27
  • 2011-06-24
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 2016-11-11
  • 2014-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多