目前,我的用户目录位于“C:\ Users \João”中,我在Windows 7下运行Python 2.7的64位版本。
通常,Python解释器以'ascii'作为默认编码运行。但是,出于某种原因,当Eclipse运行它时,默认编码为'utf-8'。现在,在常规Python控制台中,会发生以下情况:
>>> sys.getdefaultencoding()
'ascii'
>>> os.path.expanduser('~/filename')
'C:\\Users\\Jo\xe3o/filename'
>>> x = open(_, 'w')
>>> x.close()
>>>
我会注意到'\ xe3'是Latin-1和Windows-1252中'ã'的代码,一切都很顺利。 但是,在Eclipse中,
>>> sys.getdefaultencoding()
'utf-8'
>>> os.path.expanduser('~/filename')
'C:\\Users\\Jo\xc6o/filename'
>>> x = open(_, 'w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 13] Permission denied: 'C:\\Users\\Jo\xc6o/filename'
这令人困惑,因为'\ xc6'是'Æ'的字符代码,除此之外,它不是有效的UTF-8。
如果你想知道“权限被拒绝”,而不是“没有这样的文件或目录”,一些程序也写了“C:\ Users \JoÆo”的东西,我也不知道为什么。
那么原因是什么,解决方案是什么?它甚至是程序设计还是你认为这可能是错误的系统设置?
TL; DR:主目录在标准Python解释器中正确报告为“C:\ Users \João”,在Eclipse中运行解释器时报告为“C:\ Users \JoÆo”。为什么呢?
答案 0 :(得分:0)
尝试更改Eclipse的默认编码。文件菜单:Windows - &gt;喜好;树吧:一般 - &gt;工作区;将“文本文件编码”从Cp1252更改为ISO-8859-1。
如果打开“调试配置”,也可以更改特定调试配置,转到“公共”选项卡,更改“编码”。
编辑:非常奇怪。在带有“João”目录的目录中对“./J*”执行glob在我的Eclipse中运行正常,在64位Python 2.7.2,Windows 7中使用UTF-8和Cp1252(默认)。
UTF-8:
[ '\乔\ xe3o']
的Cp1252:
[ '\乔\ xe3o']