如何确定字符的Unicode块,特别是Qt QChar?

时间:2010-12-12 20:22:52

标签: c++ qt unicode qchar

在Java中,我能够确定某个特定字符是否是例如日语汉字使用Unicode.blockOf(字符)。我正在尝试为QChar做同样的事情,但找不到相关的功能来做到这一点。我想知道我是不是错过了,或者我必须自己动手,如果是的话 - 怎么样?

2 个答案:

答案 0 :(得分:4)

QChar::Category然而它并不能提供您所需要的一切。

为了检查char是否在某个范围内,您可以编写如下函数:

bool inRange(QChar c, ushort b, ushort e) {
    return (c.unicode() >= b) && (c.unicode() <= e);
}

然后您可以像这样使用它:

inRange(c, 0x3040, 0x309F); // Hiragana?

当然,你可以更进一步,使其更抽象,并列举范围:

inRange(c, Range::Hiragana);

here是Unicode块的列表

答案 1 :(得分:0)

我不知道是否有更好的Qt特定方法。如果没有,您可以尝试使用ICU而不是滚动自己的解决方案。

ICU既有“C / C ++”版本,也有Java版本。 ICU的Java版本实际上与i18n / l10n的一些Java标准库共享一个共同的祖先,所以C / C ++版本很容易让你弄明白。