Windows Unicode大写/小写

Windows Unicode大写/小写,windows,unicode,Windows,Unicode,在Win32 API中,有两个函数称为CharLowerBuff和CharUpperBuff。两者都有字符和Unicode变体(Win32的Unicode API在不久前由UCS-2更改为UTF-16,请参阅Wikipedia中的文章“Microsoft Windows中的Unicode”)。我想知道的是,如果字符更改为大写或小写,可变长度UTF-16字符实体的长度必须保持不变,因为CharLower/UpperBuffW不会更改缓冲区的长度 那么,Unicode标准是否规定,对于具有混合大小写

在Win32 API中,有两个函数称为CharLowerBuff和CharUpperBuff。两者都有字符和Unicode变体(Win32的Unicode API在不久前由UCS-2更改为UTF-16,请参阅Wikipedia中的文章“Microsoft Windows中的Unicode”)。我想知道的是,如果字符更改为大写或小写,可变长度UTF-16字符实体的长度必须保持不变,因为CharLower/UpperBuffW不会更改缓冲区的长度


那么,Unicode标准是否规定,对于具有混合大小写字符的语言,相互匹配的两个字符必须在一个字符范围内,从而使用UTF-16进行相同长度的字符编码?

您实际的问题似乎完全是关于Unicode和该标准的内容,也不是关于Windows的任何事情。我不认为标准可以强制要求任何这样的事情。我不知道UTF-16,但对于UTF-8,有些字符的小写字母有一个传统的拉丁-1代码点,而大写字母则没有这样的代码点。往返那些必要的改变编码字符的长度。类似地,我假设将来BMP中可能会有字符在BMP之外获得上/下对。您提到的两个函数都适用于普通
char
字符以及整个字符
wchar\t
字符。如果使用了or函数,这取决于
UNICODE
宏的存在。@triplee,可能UTF-8不是这样,而是UTF-16。Windows必须在其UTF-16变体中保持上述功能的总长度。因此必须有这样的保证。CharUpperBuff是一个用于向后兼容的遗留函数,不适用于大写版本与小写版本长度不同的字符串。请改用LCMapStringEx。