C ++检查unicode字符是否为全宽

时间:2013-12-18 14:58:00

标签: c++ winapi visual-c++ unicode mfc

如何检查unicode字符是否为全宽?

我使用Win32 / MFC

例如,为全宽,A不是全宽,为全宽,F不是全宽。

2 个答案:

答案 0 :(得分:8)

您需要的是检索角色的East Asian Width。您可以通过解析Unicode字符数据库中的EastAsianWidth.txt文件来完成此操作。我找不到返回此信息的Win32 API,但在Python中,您可以使用unicodedata.east_asian_width(unichr)

有关问题的背景和更多信息,请参阅Annex #11

答案 1 :(得分:-2)

“全宽”是什么意思?字符的宽度 取决于它显示的字体。

如果你的意思是它是否是单字节字符,那就是 还不清楚。什么编码的单字节字符?在 UTF-8,如果(并且仅当),它将是单字节字符 代码点小于128;如果您使用的是UTF-16(很可能, 因为你在Windows下,只需要比较角色 128. ISO 8859-1中的单字节编码(另一种广泛的传播 编码):与256比较。对于任何小于256的东西, UTF-16单元在数字上与代码点相同 ISO 8859-1(有时称为Latin-1)。对于单字节 编码ASCII(几乎从未使用过,大多数 对于前128个代码,常见编码与它相同 积分),任何少于128的东西都是好的。