QString 下的中文, 如何转char * 在vs 2010 下可识别?

小K小Q 2014-06-01 01:15:57
QString fileAllPath = m_cachDir; //此处有中文
qDebug()<<fileAllPath; //中文正常打印
char* ch;
QByteArray ba = fileAllPath.toLatin1();
ch=ba.data();

qDebug()<<ch; //中文打印出,为乱码.


如何转换才能让 char * ch 打印不为中文乱码?
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小K小Q 2014-06-01
  • 打赏
  • 举报
回复
问题已查到,因为用的qt 4.7 并在windows 下.这种方法可行. QString str; QByteArray t1=str.toLocal8Bit(); char *_char=t1.data();
奉壹 2014-06-01
  • 打赏
  • 举报
回复
另外QByteArray有重载operator const char* 所以ch=ba.data();可以免了
奉壹 2014-06-01
  • 打赏
  • 举报
回复
QByteArray ba = fileAllPath.toUtf8();
dbzhang800 2014-06-01
  • 打赏
  • 举报
回复
任何一种支持中文的编码,都能保证转成的char* 可在VS2010的非Qt环境下被识别。比如GB18030(GBK,GB2312),UTF8, UTF16-BE, UTF16-LE, ... 当然,你用不支持中文的编码进行直接转换肯定是错的,就比如,你现在toLatin1()做的,把每一个QChar字符直接转成一个char字符。 另外,qDebug() 不能作为转换是否正确的依据。

16,216

社区成员

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

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