Qt解决QUrl含有中文或特殊字符无法下载的问题
2015-03-26 18:04
2211 查看
// url = http://www.xxx.com/xxx – 3 xxx.txt void getRemoteFile(const QString url) { // 解决文件名中含有特殊字符无法下载的问题 QString fileName = QUrl(url).fileName(); QString headPath = QString(url).remove(fileName); QTextCodec *codec = QTextCodec::codecForName("gbk"); QByteArray byte = codec->fromUnicode(fileName); // 只对文件名进行编码,否则前面路径会改变 http%3A%2F%2Fwww.xxx byte = byte.toPercentEncoding(); // 转成带百分号的格式 byte = QByteArray(headPath.toStdString().c_str()) + byte; QUrl encodeUrl(byte); encodeUrl = encodeUrl.fromEncoded(byte); // encodeUrl = http://www.xxx.com/xxx %A8C 3 xxx.txt m_reply = m_manager.get(QNetworkRequest(encodeUrl)); }
把转码后的字符转回
QString path = reply->url().toString().remove(m_remoteServerURL); // path = xxx %A8C 3 xxx.txt QTextCodec *codec = QTextCodec::codecForName("gbk"); QByteArray ba = codec->fromUnicode(path); ba = QByteArray::fromPercentEncoding(ba); path =codec->toUnicode(ba); // path = xxx – 3 xxx.txt
相关文章推荐
- 解决SQL语句中含有中文字符无法查询问题
- 【解决问题】文件名中含有中文,出现浏览器显示无法下载的情况
- 解决SQL语句中含有中文字符无法查询问题
- iOS 文件下载 (AFNetwork 三方框架 文件名中文字符乱码问题解决)四
- JAVA中无法处理带有特殊字符文件名的zip包的问题解决
- 解决ckeditor中文路径无法下载,无法显示图片问题
- Qt下无法输入中文问题的解决
- 理解SQLSERVER中的排序规则,解决无法正确显示中文字符的问题
- QNetworkAccessManager 实现FTP上传功能,解决 文件名是中文,QUrl含有中文路径 不能上传的问题
- (android文件下载)下载链接中包含特殊字符--空格,中文等,导致无法识别处理方案
- [完]PHP文件下载 下载GET值中含有中文字符的文件,保存中文文件名,文件不能打开,遇到的编码问题
- Oracle用户密码含有特殊字符导致无法登陆解决方法
- 解决QT中中文字符乱码问题
- Oracle用户密码含有特殊字符导致无法登陆解决方法
- javascript解决中文传递乱码和特殊字符问题
- iis7如何添加mime类型支持所有后缀名文件下载的方法(解决特殊后缀文件无法下载的问题)
- 解决QT中中文字符乱码问题
- PHP处理中文字符串中的特殊字符解决Oracle插入报错的问题
- 理解SQLSERVER中的排序规则,解决无法正确显示中文字符的问题
- nutch无法下载中文文件的问题[解决]