当前位置: 代码迷 >> QT开发 >> QT/E上为什么不能操作中文名文件
  详细解决方案

QT/E上为什么不能操作中文名文件

热度:96   发布时间:2016-04-25 04:34:01.0
QT/E下为什么不能操作中文名文件?
嵌入式开发环境:linux2.6.37 + QT4.7
在开发应用程序时,需要复制和读写中文名文件,但是QT相关函数返回失败,换成英文名文件,就正常?
如下:
  QTextCodec *utf8 = QTextCodec::codecForName("utf8");
  QTextCodec *code = QTextCodec::codecForName("GB2312");
  QTextCodec::setCodecForLocale(utf8);
  QTextCodec::setCodecForCStrings(code);
  QTextCodec::setCodecForTr(utf8);

  QString fileName = tr("测试.txt");
  fileName = fileName.trimmed();
  QByteArray temp = fileName.toAscii();
  const char *tifFileName = temp.data();
  FILE *myFile = fopen(tifFileName, "rb");//失败 myFile = NULL
  if(myFile != NULL)
  fseek(myFile, SEEK_SET, SEEK_EN);

------解决方案--------------------
fileName.toAscii();
这个调完之后就变成了ascii了,中文就成乱码了, 不要调.

------解决方案--------------------
探讨

我主要是想从u盘里复制中文名文件到文件系统里,如果只是复制操作文件系统本地的中文名文件是没有问题的,换成u盘路径就不行,如果复制u盘里的英文名文件也没问题,所以怀疑是u盘挂载问题,之后,添加上挂载参数mount /dev/uba1 /mnt/usb -o codepage=936,iocharset=cp936或者iocharset=utf8等都不行,复制不了文件
  相关解决方案