qt 中文文件名乱码问题

风泥 2013-05-28 05:26:51
file=QFileDialog::getSaveFileName(widget,"record","untitled", "*.avi");
QByteArray ba = file.toLocal8Bit();
c_file = ba.data();
qDebug() << "file = " << file;
qDebug() << "c_file = " << c_file;
video = cvCreateVideoWriter(c_file, CV_FOURCC('M', 'P', '4', '3'), fps,cvSize
(ipImage->width,ipImage->height));
我通过QFileDialog::getSaveFileName文件对话框,设置文件名为中文,

由于cvCreateVideoWriter须要的参数是const char *,所以做了一个转换,
转换完成后,file和c_file中文部分都是正常的,

但是保存在硬盘上的中文名是乱码,

求解!
...全文
581 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
haiquanv 2015-04-27
  • 打赏
  • 举报
回复
我也遇到了,中文文件名称乱码的问题。有没有那位解决了的啊?
惟有你爱我 2013-09-02
  • 打赏
  • 举报
回复
楼主问题是怎么解决的?我现在也遇到了同样的问题。
风泥 2013-05-28
  • 打赏
  • 举报
回复
Qt中用于控制读入和写出文件系统时的字符编码由QTextCodec::setCodecForLocale()所决定。 加入QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));问题解决
风泥 2013-05-28
  • 打赏
  • 举报
回复
我在构造函数里加了 QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312")); QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); 没用呀,你给的那三条我也试了,没用
海的神话 2013-05-28
  • 打赏
  • 举报
回复
在main函数里添加

QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
注意添加头文件#include <QTextCodec>
风泥 2013-05-28
  • 打赏
  • 举报
回复
避免下沉,先自顶一楼

16,216

社区成员

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

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