QString中包含中文调用toStdString出现乱码

fkeujjpdc 2013-07-17 11:19:28
如题,QString显示的不是乱码,但是调用toStdString,toLocal8Bit,toLatin1都试过了,有中文的地方都是乱码
...全文
3349 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
threadroc 2014-06-09
  • 打赏
  • 举报
回复 2
QString qpath; ... qpath读取中文路径代码... ... string path=qpath.toLocal8Bit().data();//将QString转string不乱码;
  • 打赏
  • 举报
回复
21楼正解。谢谢
fkeujjpdc 2013-10-09
  • 打赏
  • 举报
回复
谢谢大家回复但是还是没找到解决办法,不知道大家从文件对话框中读到的路径怎么转换为string类型的字符串的
alchaochao 2013-09-13
  • 打赏
  • 举报
回复 1
在main函数中添加头文件#include <QTextCodec> 在QApplication a(argc, argv);后面添加如下代码: QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 有可能还需要QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
okhelper 2013-09-13
  • 打赏
  • 举报
回复
你的Qt是哪个版本? 5.0以前的版本,windows下默认不是utf-8的编码,我的QString是从数据库中读出来的,没有问题的
fkeujjpdc 2013-09-11
  • 打赏
  • 举报
回复
引用 18 楼 okhelp 的回复:
我之前也是出现乱码,已经弄好了,不过是windows平台的,不知道你是什么平台。 解决方法: .cpp源代码改用utf-8格式,然后使用toLocal8Bit 我的是转换成char* 应该是一个效果。
我的是是WINDWOS平台的,我用你说的方法试过,你的字符串可能是自己程序里面的。但是我的是从filedialog里面读回来的,所以用toLocal8Bit不能解决
okhelper 2013-09-10
  • 打赏
  • 举报
回复
我之前也是出现乱码,已经弄好了,不过是windows平台的,不知道你是什么平台。 解决方法: .cpp源代码改用utf-8格式,然后使用toLocal8Bit 我的是转换成char* 应该是一个效果。
程序尸 2013-09-09
  • 打赏
  • 举报
回复
http://blog.csdn.net/dbzhang800/article/details/6300789
  • 打赏
  • 举报
回复
设置编码方式为utf-8不行吗?
fkeujjpdc 2013-09-09
  • 打赏
  • 举报
回复
引用 13 楼 ppdayz 的回复:
http://blog.csdn.net/dbzhang800/article/details/6300789
去找了一下没有找到实际的解决方案,大家能不能给他具体的解决方案,在WINDOWS下可以用微软的UNICODE转换API进行转换,在LINUX下真不知道怎么做
xswlzx 2013-09-06
  • 打赏
  • 举报
回复
如果设置成 utf8 环境 QString转换成的是unicode编码,这样你只能转换成wchar_t
ppdayz 2013-09-03
  • 打赏
  • 举报
回复
http://blog.csdn.net/dbzhang800/article/details/6300789
fkeujjpdc 2013-09-03
  • 打赏
  • 举报
回复
引用 11 楼 ppdayz 的回复:
9-10两楼都在误人子弟 如果你想找到解决办法的,可以看下dbzhang800的博客,他是专家,他的解决办法才是正确的
能不能给个链接啊
ppdayz 2013-09-02
  • 打赏
  • 举报
回复
9-10两楼都在误人子弟 如果你想找到解决办法的,可以看下dbzhang800的博客,他是专家,他的解决办法才是正确的
hqw19881118 2013-09-01
  • 打赏
  • 举报
回复
个人习惯,在遇到代码中可能存在中文时,必加下面三条语句,然后就再也不会有中文乱码问题了:
//设置编码
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
仅供参考
davidsu33 2013-08-31
  • 打赏
  • 举报
回复
正确做法,设置语言翻译器,setCodecForTr,使用QString的时候改写成QObject::tr("XXXX")格式,一般使用gb18030的编码即可。
蜗牛sf 2013-08-30
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/370159314 看下这个是不是野指针的问题
locky1218 2013-08-30
  • 打赏
  • 举报
回复
请把tr()的地方改成QStringLiteral()试试,请参考我的博文http://blog.csdn.net/locky1218/article/details/10568261
fkeujjpdc 2013-08-30
  • 打赏
  • 举报
回复
是啊,怎么转
引用 5 楼 ppdayz 的回复:
你是是不是要转成std::string?
ppdayz 2013-08-29
  • 打赏
  • 举报
回复
你是是不是要转成std::string?
加载更多回复(4)

21,491

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧