• 6696阅读
  • 6回复

[提问]QT显示文件名变成问号怎么办 求解啊 论坛里的大神们 [复制链接]

上一主题 下一主题
离线tc725210
 

只看楼主 正序阅读 楼主  发表于: 2012-08-24
hello,大神们
本人在linux下用QT4读U盘内容,但是中文文件显示出来是一堆问号,请问何解呢?
部分代码如下:

QString Target = tr("/dev/sd%1%2").arg(QString(dev)).arg(i);
//mount U盘 不知道参数有错没
  int result = mount(Target.toLatin1(), MEMORYCARD, "vfat", 0, 0);

for (int i = 0; i < list.count(); i++) {
        fileInfo = &(list.at(i));        items.clear();
        item = new QStandardItem(tr("%1").arg(i+1));        items.push_back(item);
        QString str;//文件名在这里呢
        item = new QStandardItem(tr("%1").arg(fileInfo->fileName()));        items.push_back(item);
        item = new QStandardItem(tr("%1/%2").arg(fileInfo->path()).arg(fileInfo->fileName()));        items.push_back(item);
        Model->insertRow(Model->rowCount(), items);    }


还有就是我试过setCodecForTr这类什么的函数了,系统默认是UTF-8编码,我
//GBK GB2312 GB18030都试过了
QTextCodec *codec = QTextCodec::codecForName("GBK");
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);
米有效果啊。。。
好着急呀,有知道的大神们指导下。。。谢谢了!!!
离线tc725210

只看该作者 6楼 发表于: 2012-08-28
回 5楼(wxj120bw) 的帖子
多谢 具体要如何做呢 我试过了
mount(Target.toLatin1(), MEMORYCARD, "vfat", MS_SYNCHRONOUS, "iocharset=GBK");
或者
mount(Target.toLatin1(), MEMORYCARD, "vfat", MS_SYNCHRONOUS, "iocharset=utf8");
甚至
mount(Target.toLatin1(), MEMORYCARD, "vfat", MS_SYNCHRONOUS, "iocharset=cp936");
都还是不行。。。
还有就是发现一个奇异的现象,第一次mount上去无论如何都显示的???????
然后我把U盘直接拔掉  重新插上 再次mount的时候正确显示中文了!!汗
离线wxj120bw

只看该作者 5楼 发表于: 2012-08-27
回 3楼(tc725210) 的帖子
U盘挂载时需要指定字符集 中文显示正常 U盘的文件名应该GBK编码
离线tc725210

只看该作者 4楼 发表于: 2012-08-27
大神们啊、、、、、、、、、、、
离线tc725210

只看该作者 3楼 发表于: 2012-08-26
回 2楼(wxj120bw) 的帖子
正常的 系统下其他的中文用的UTF-8的显示正常的 但是如果我在windows下中文命名的文件用的其它字符集的就显示问号了。。。
离线wxj120bw

只看该作者 2楼 发表于: 2012-08-25
回 1楼(tc725210) 的帖子
U盘挂载之后 系统下中文显示是否正常?
离线tc725210

只看该作者 1楼 发表于: 2012-08-24
都没人啊。。。。。。。。。求带求翱翔
快速回复
限100 字节
 
上一个 下一个