• 7604阅读
  • 9回复

[提问]请教诸位,在QT中,一个含有汉字的文件名,用ifstrem无法打开,为什么? [复制链接]

上一主题 下一主题
离线洛斯曼
 
只看楼主 倒序阅读 楼主  发表于: 2007-04-17
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
请教诸位,在QT中,一个含有汉字的文件名,用ifstrem无法打开,为什么?
这个文件,用FILE却能打开。
似乎是汉字编码格式不一样,但是应该用什么编码呢?怎样转换?
这是个难题。
[ 此贴被XChinux在2008-07-19 21:11重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2007-04-17
使用QTextCodec把文件路径进行一下编码转换。
我们使用的中文文件名一般都是GB编码的,而Qt中默认使用的是UTF-8的,所以会出现找不到文件的情况。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线洛斯曼
只看该作者 2楼 发表于: 2007-04-18
谢谢!我试试!
离线洛斯曼
只看该作者 3楼 发表于: 2007-04-18
好像还不行,打不开,运行情况见附图。请教XChinux,怎么办?
离线洛斯曼
只看该作者 4楼 发表于: 2007-04-18
用QTextCodec转的过程中出错,所以我改用QString::toUtf8
离线XChinux

只看该作者 5楼 发表于: 2007-04-18
操作系统中用的文件名是GB的,
如果源代码(文件本身的内码)中的是UTF-8的,则需要把它转化为GB的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线aaniao999

只看该作者 6楼 发表于: 2007-04-20
一半跟系统有连接的字符都是toLocal8Bit()转换的,你试试
QByteArray bry=QString("xxxxxxxxxxxxxxxxxx").toLocal8Bit();
想了半天,想不出来了,QFile那的参数敲死了是QString的嘛QByteArray不是多好
离线洛斯曼
只看该作者 7楼 发表于: 2007-04-20
引用第5楼XChinux于2007-04-18 18:27发表的  :
操作系统中用的文件名是GB的,
如果源代码(文件本身的内码)中的是UTF-8的,则需要把它转化为GB的。

谢谢,我再试试!
离线洛斯曼
只看该作者 8楼 发表于: 2007-04-20
引用第6楼aaniao999于2007-04-20 09:45发表的  :
一半跟系统有连接的字符都是toLocal8Bit()转换的,你试试
QByteArray bry=QString("xxxxxxxxxxxxxxxxxx").toLocal8Bit();
想了半天,想不出来了,QFile那的参数敲死了是QString的嘛QByteArray不是多好

谢谢!
离线洛斯曼
只看该作者 9楼 发表于: 2007-04-23
还是不行。急呀!
快速回复
限100 字节
 
上一个 下一个