Unicode 如何使用qstring作为字符数组

Unicode 如何使用qstring作为字符数组,unicode,qstring,arrays,Unicode,Qstring,Arrays,我试图写一个函数,找出这个词是否是格鲁吉亚语。我为拉丁字符写的,而且很有效。现在我试图将它改为逐字符读取QString,并与格鲁吉亚语的第一个和最后一个字母进行比较。我该怎么做?我做错了什么 bool Georgianword(QString &sit) { int i=0; QByteArray ba = sit.toUtf8(); while (i<sit.size()) { if (ba[i]<'ა' || ba[i]>'ჰ')

我试图写一个函数,找出这个词是否是格鲁吉亚语。我为拉丁字符写的,而且很有效。现在我试图将它改为逐字符读取QString,并与格鲁吉亚语的第一个和最后一个字母进行比较。我该怎么做?我做错了什么

bool Georgianword(QString &sit)
{ int i=0;

      QByteArray ba = sit.toUtf8();
while (i<sit.size())
{
    if (ba[i]<'ა' || ba[i]>'ჰ')
        break;
    i++;
}

return (i==sit.size());

}

如果将字符串编码为UTF-8,则处理的是UTF-8代码单元单字节,它可能只是多字节序列的一部分,而不是代码点。最好的解决方案是简单地使用QString迭代器:

for (QString::iterator it = sit.begin(); it != sit.end(); ++it) {
    if (*it < 'ა' || *it > 'ჰ') {
        ...
    }
}

你的代码在哪方面出错了?我不知道格鲁吉亚语,但从这个UTF-8格鲁吉亚语字符页面上看,你要检查的字母似乎只是小写字母。但您没有检查大写字母。您的测试输入有大写字符吗?没有,格鲁吉亚语中没有大写字符