Linux qfile中文文件名,QFile无法打开包含unicode字符的文件名
我和PySide有点问题。我使用QtCore.QImage处理一些图像,注意到路径名中包含unicode字符的图像文件没有被打开。
所以我开始调查,发现QFile也出现了同样的问题。在
我试着给它输入一个由testring编码的'utf8'和一个解码的unicode字符串,两者的区别是一样的。
我也尝试过使用那些QFile.encodeName和QFile.decodeName函数,但所做的只是从文件名中去掉非ascii字符。在
我制作这个脚本是为了演示:#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from PySide.QtCore import QFile, QIODevice
try:
os.makedirs(u'/tmp/qttest')
except:
pass #probably dir just exists
os.chdir(u'/tmp/qttest')
def make_file(fn):
f = open(fn, 'w')
f.close()
def check_file(fn):
f = QFile(fn)
f.open(QIODevice.ReadOnly)
return f.isReadable()
fna = u'somefile.txt'
fnu = u'einhverskrá.txt'
make_file(fna)
make_file(fnu)
print fna+u' was opened successfully: ', check_file(fna)
print fnu+u' was opened successfully: ', check_file(fnu)
print fna+u' exists: ', os.path.exists(fna)
print fnu+u' exists: ', os.path.exists(fnu)
输出
^{pr2}$
有人能解释一下吗?在
更新
在看过源代码之后,我发现在unix上,QFile.open()总是通过这个函数传递文件名:static QString locale_decode(const QByteArray &f)
{
#if defined(Q_OS_DARWIN)
// Mac always gives us UTF-8 and decomposed, we want that composed...
return QString::fromUtf8(f).normalized(QString::NormalizationForm_C);
#elif defined(Q_OS_SYMBIAN)
return QString::fromUtf8(f);
#else
return QString::fromLocal8Bit(f);
#endif
}
这通常会导致从字符串中删除unicode字符。在
Linux qfile中文文件名,QFile无法打开包含unicode字符的文件名相关推荐
- linux apache中文名称图片,Apache、NGINX支持中文URL图片、文件名的终极解决方案
本帖最后由 vzandy 于 2013-3-15 15:40 编辑 Apache(32位):安装环境:CentOS 5.6 + Apache 2.2.15 安装结果:安装后支持"中文图片.文 ...
- Arch Linux KDE下 WPS 部分无法打开中文名的文件问题 - 无法找到“”。请检查文件名的拼写,并检查文件位置是否正确。
问题描述 无法找到"".请检查文件名的拼写,并检查文件位置是否正确. 安装过程 yay -S wps-office-cn wps-office-mui-zh-cn ttf-wps- ...
- linux绑定中文域名,linux shell正则表达式如何匹配域名(包含中文域名)
linux shell正则表达式如何匹配域名(包含中文) shell匹配域名 1. 匹配示例 最近的项目需要校验一下域名格式匹配,百度一下,说明如下: DNS规定,域名中的标号都由英文字母和数字组成, ...
- linux shell正则表达式如何匹配域名(包含中文域名)
linux shell正则表达式如何匹配域名(包含中文) shell匹配域名 1. 匹配示例 2.使用差别 3.中文域名 4.为什么[\u4e00-\u9fa5]不能匹配中文(**想直接获取匹配包含中 ...
- Unix/Linux中中文图像输出乱码问题。
最近,在把条码系统集成到Oracle EBS平台上时,老是遇到中文乱码问题.服务器用Apache 1.3.EBS 平台的应用服务器JRun. 经过多方查找资料,现拿出自己的解决方案供后续遇到此类问题的 ...
- linux redhat中文字体安装,中文Linuxredhat中文字体安装
Linux redhat中文字体安装 安装完linux redhat 5.4打开浏览器发现显示中文全部成了乱码原来在安装的时候没有选择安装中文字体支持包打开系统的镜像找到中文字体的相关安装包如 ...
- linux redhat中文字体安装,Linux redhat中文字体安装.doc
Linux redhat中文字体安装 Linux redhat中文字体安装 安装完linux redhat 5.4,打开浏览器发现显示中文全部成了乱码,原来在安装的时候没有选择安装中文字体支持包,打开 ...
- linux常用命令 打开文件,【Linux】常用命令 lsof查看打开的文件
Linux系统把软硬件都抽象成文件,所以通过文件可以追踪到很多重要信息,如读取的配置文件.打开的端口等. 下面是常见的用法: 默认测试文件名为text.txt 1,显示打开text.txt的进程: l ...
- comsol临时文件夹中有不支持的字符_文件名中不能包含的字符
文件名是为了方便人们区分计算机中的不同文件,而给每个文件设定一个指定的名称.由文件主名和扩展名组成. DOS操作系统规定文件名由文件主名和扩展名组成,文件主名由1~8个字符组成,扩展名由1~3个字符组 ...
最新文章
- Apache htpasswd命令
- linux设置脚本运行时间_手机自动点击器,录制手势自动点击,可设置运行时间...
- Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目
- matlab转差频率控制,转差频率控制的异步电机调速系统的研究
- Python中append()与extend()的区别
- 【探路者】第五周立会报告1(总第27次)
- java实现lof,LOF异常检测算法实现
- Ardusub源码解析学习(二)——电机库
- dlna android电视,DLNA推送安卓手机投屏电视
- 实现原理 扫描枪_条码扫描枪原理
- 2022新阅读:nmn有用吗?nmn注意事项有哪些?
- 响应函数 handlers
- ubuntu20.04开机显示recovering journal死机的解决方法
- 郑州计算机c语言培训机构,c语言入门学习选郑州哪家计算机专业学校
- 【转载】飞秋最新版2013下载
- Leetcode-元素和小于等于阈值的正方形的最大边长(python)
- BIOS设置光盘启动(上.Award bios)
- 能源区块链实验室出席G20汉堡峰会企业论坛
- PSP系统项目前景与范围文档
- 【超详细】7z的详解和7z的控制台参数说明
热门文章
- python使用matplotlib可视化:折线图、条形图、柱状图、直方图、饼图、雷达图(极坐标图)
- R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex)、将变量映射到网络的边(edge)
- R语言Logistic逐步回归模型案例:分析与冠心病有关的危险因素
- 机器学习特征筛选:相关系数法(correlation)
- 机器学习数据预处理之离群值/异常值:图像对比法
- 请你介绍下Logistic回归模型?
- celldex包使用
- mysql text index_MySQL 全文索引(fulltext index)
- 初中教师资格证计算机试讲教案模板,初中数学教师资格证面试教案模板: 《投影》...
- VMware虚拟机搭MAC系统