• 6930阅读
  • 6回复

[提问]qt4 QString indexOf 查找中文总是返回-1 [复制链接]

上一主题 下一主题
离线jingma0919
 

只看楼主 倒序阅读 楼主  发表于: 2014-08-20
如题,哪位大虾帮解决下啊
离线bran_lee

只看该作者 1楼 发表于: 2014-08-20
应该是编码的问题吧,要确定查找和被查找的串在QString下都一样
当你只有锤子时,你看什么都像是钉子!
离线彩阳

只看该作者 2楼 发表于: 2014-08-20
将中文硬编码在代码里面了吧?
上海Qt开发联盟,热忱地欢迎你的加入!
离线jingma0919

只看该作者 3楼 发表于: 2014-08-20
回 bran_lee 的帖子
bran_lee:应该是编码的问题吧,要确定查找和被查找的串在QString下都一样 (2014-08-20 12:21) 

    QTextCodec* code = QTextCodec::codecForName("GBK");
    QTextCodec::setCodecForCStrings(code);
    QTextCodec::setCodecForLocale(code);
    QTextCodec::setCodecForTr(code);
设置编码了
这样设有问题吗?
离线jingma0919

只看该作者 4楼 发表于: 2014-08-20
回 彩阳 的帖子
彩阳:将中文硬编码在代码里面了吧? (2014-08-20 12:56) 

什么是硬编码?
求指教。。。。
离线jingma0919

只看该作者 5楼 发表于: 2014-08-20
问题解决了,前后的编码方式不同导致的,我收到的是utf-8格式,然后转换为GBK就可以了
转换方式:
QTextCodec *gbk = QTextCodec::codecForName("GB18030");
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");

QString a = "utf8乱码";
char endmsg[128 4] = {0};
memcpy(endmsg, gbk->fromUnicode(utf8->toUnicode(a.toLatin1())).data(),128);


同时谢谢上面二位大虾的回答!
离线roywillow

只看该作者 6楼 发表于: 2014-08-20
别在代码里用中文能解决一切问题
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个