比较国际字符串
Comparing international strings
我想做的是比较具有特殊字符(法语)的 2 个 QString
首先我从服务器收到的 json 数据保存在 txtInfo
中
txtInfo = "Présenter";
当我遇到这样的情况时,它不会工作(它不会设置状态。)
if (txtInfo == "Présenter"){
m_appState = 8;
m_appStateString = AppStatesArray[m_appState];
}
else {
m_appState = -1;
m_appStateString = "UNKNOWN";
}
我错过了什么?如果我想比较的不是法语而是中文怎么办?
非常感谢
从 Qt 5 开始,QString 的 operator==
对与其进行比较的字符数组执行 fromUtf8
转换。但是,如果您的源文件 (.cpp) 未使用 utf8,则您需要构建自己的 QString。
取决于源文件的 (.cpp) 编码:
Utf8:
QString compared = QString::fromUtf8("Présenter");
if (txtInfo == QString::fromUtf8("Présenter")){
本地 8 位:
QString compared = QString::fromLocal8Bit("Présenter");
if (txtInfo == QString::fromUtf8("Présenter")){
为了 100% 正确,不要忘记 normalize 你的字符串:
txtInfo = txtInfo.normalized(QString::NormalizationForm_D);
QString compared = /* the correct form for you */;
if (txtInfo == compared.normalized(QString::NormalizationForm_D)){
我想做的是比较具有特殊字符(法语)的 2 个 QString
首先我从服务器收到的 json 数据保存在 txtInfo
中txtInfo = "Présenter";
当我遇到这样的情况时,它不会工作(它不会设置状态。)
if (txtInfo == "Présenter"){
m_appState = 8;
m_appStateString = AppStatesArray[m_appState];
}
else {
m_appState = -1;
m_appStateString = "UNKNOWN";
}
我错过了什么?如果我想比较的不是法语而是中文怎么办?
非常感谢
从 Qt 5 开始,QString 的 operator==
对与其进行比较的字符数组执行 fromUtf8
转换。但是,如果您的源文件 (.cpp) 未使用 utf8,则您需要构建自己的 QString。
取决于源文件的 (.cpp) 编码:
Utf8:
QString compared = QString::fromUtf8("Présenter");
if (txtInfo == QString::fromUtf8("Présenter")){
本地 8 位:
QString compared = QString::fromLocal8Bit("Présenter");
if (txtInfo == QString::fromUtf8("Présenter")){
为了 100% 正确,不要忘记 normalize 你的字符串:
txtInfo = txtInfo.normalized(QString::NormalizationForm_D);
QString compared = /* the correct form for you */;
if (txtInfo == compared.normalized(QString::NormalizationForm_D)){