检查C++中的Unicode字符是否为全角

9

如何检查Unicode字符是否为全角?

我使用Win32 / MFC。

例如,是全角的,A不是全角的, 是全角的,F不是全角的。


你应该意识到这个问题毫无意义。如果你不了解字符串的编码方式,那么它就毫无意义。请查看这篇很好的文章,它应该能够为您解决问题 -> http://www.joelonsoftware.com/articles/Unicode.html - Pandrei
2
+1 你的问题让我今天去学习了一些东西! - Roddy
@Pandrei 我不建议阅读那篇文章。虽然它提出了一两个有用的观点,但也存在一些错误:首先,作者似乎不理解_UCS_和_UTF_之间的区别。 - James Kanze
什么是全宽? - CloudyMarble
2个回答

8

这是正确的答案。顺便说一句:Unicode 联盟的各种文件都被设计为易于解析,所以从中生成 C++ 表格不应该太困难。(我曾经为许多类似的文件做过这样的事情。) - James Kanze
除了东亚语言之外,还有哪些语言具有全角字符? - linquize
更详细的讨论,请参见此答案:https://dev59.com/w3A65IYBdhLWcg3wyRyk#9145712 - Blaisorblade

-4

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

如果您指的是单字节字符,那还不够清楚。在哪种编码下是单字节字符呢?在UTF-8中,只有当代码点小于128时,它才是单字节字符;如果您使用UTF-16(可能是因为您正在使用Windows),只需将字符与128进行比较。在ISO 8859-1(另一种广泛使用的编码)中,单字节编码请与256进行比较。对于小于256的任何内容,UTF-16单元在ISO 8859-1中的代码点上数值上相同(有时也称为Latin-1)。对于单字节编码ASCII(几乎不再使用,但大多数常见编码的前128个代码点与之相同),小于128的任何内容都可以。


@Roddy 这解释更合理。我应该在我的 Unicode 编码中查找他的第二个全宽字符。(当然,这基本上意味着没有简单的答案。) - James Kanze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接