Unicode字母数字字符范围

Unicode字母数字字符范围,unicode,Unicode,我正在看Windows API函数。因为它只需要一个TCHAR,所以显然无法对UTF16内容的代理项对做出任何决定。这是否意味着不存在作为代理项对的字母数字字符?您可以通过查看无法检查非BMP代码点而丢失的内容来确定自己 例如,您将无法将帝国阿拉姆文字识别为字母数字。羞耻。BMP之外的字符可以是字母。(迈克尔·卡普兰最近)但是,IsCharAlphaNumeric无法看到BMP之外的字符(出于您提到的原因),因此您无法通过这种方式获取这些字符的分类信息 如果您有一个代理项对,请使用cchSrc=

我正在看Windows API函数。因为它只需要一个TCHAR,所以显然无法对UTF16内容的代理项对做出任何决定。这是否意味着不存在作为代理项对的字母数字字符?

您可以通过查看无法检查非BMP代码点而丢失的内容来确定自己


例如,您将无法将帝国阿拉姆文字识别为字母数字。羞耻。

BMP之外的字符可以是字母。(迈克尔·卡普兰最近)但是,
IsCharAlphaNumeric
无法看到BMP之外的字符(出于您提到的原因),因此您无法通过这种方式获取这些字符的分类信息

如果您有一个代理项对,请使用
cchSrc=2
调用
GetStringType
,并检查
C1\u ALPHA
C1\u DIGIT

编辑:此答案的后半部分不正确

这是否意味着不存在作为代理项对的字母数字字符

否,字母组中有补充代码点

例如,
Character.isleter('\uD840')
返回
false
,即使该特定值后跟字符串中任何较低的代理项值将表示字母