Unicode字母数字字符范围

时间:2011-11-20 14:43:14

标签: unicode

我正在查看IsCharAlphaNumeric Windows API函数。由于它只需要一个TCHAR,因此显然无法对UTF16内容的代理对作出任何决定。这是否意味着没有代理对的字母数字字符?

3 个答案:

答案 0 :(得分:5)

BMP以外的字符可以是字母。 (Michael Kaplan最近discussed a bug in the classification of the character U+1F48C。)但IsCharAlphaNumeric无法看到BMP之外的字符(由于您注意到的原因),因此您无法以这种方式获取分类信息。

如果您有代理对,请使用GetStringType致电cchSrc = 2并检查C1_ALPHAC1_DIGIT

修改:此答案的后半部分不正确GetStringType does not support surrogate pairs

答案 1 :(得分:0)

您可以通过查看Unicode plane assignment无法检查非BMP代码点而遗漏的内容来确定自己。

例如,您将无法将英文版的阿拉姆字符识别为字母数字。羞。

答案 2 :(得分:0)

  

这是否意味着没有代理对的字母数字字符?

不,字母组中有补充代码点。

Comparing a char to a code-point?

  

例如,Character.isLetter('\uD840')返回false,即使该字符串中的任何低代理值后面的特定值也代表一个字母。