编码 - Pydev自动更改字符

时间:2013-02-22 10:31:02

标签: eclipse encoding utf-8 pydev jython

我正在将项目中的每个py脚本编码为utf-8,因为我们肯定是将我们的应用程序从Jython 2.2.1迁移到Jython 2.5.2。出于这个原因,我在每个py文件(#encoding=utf-8)的第一行添加了一个“魔术评论”,我已经开始通过在Eclipse中调试应用程序来测试一切是否正常。

问题出现在包含字符串straße的脚本中,因为它会自动转换为straße

我怀疑的是,这种变化是否是由Pydev造成的,或者是因为utf-8没有涵盖这种角色。 如果我还没有检测到其他“奇怪”字符串,我该怎么做才能自动避免这个问题?

2 个答案:

答案 0 :(得分:0)

您确定您的.py文件使用UTF-8编码吗?尝试使用WebBrowser(作为文本)打开它并检查各种编码。虽然您看到straße似乎ß由两个字节(最可能是UTF-8)编码,但确保它确实是UTF-8。

同时检查Project / Properties上的Eclipse设置。有一个带有“文本文件编码”设置的资源面板(我只将Eclipse用于Java项目,不知道Pydev是否使用此设置)。

使用PyDev尝试此类代码并检查结果文件是否包含UTF-8文本:

# -*- coding: utf8 -*-

import codecs

f = codecs.open('strasse.txt', 'wb', 'UTF-8')
f.write('straße'.decode('UTF-8'))
f.close()

答案 1 :(得分:0)

我的猜测是你在该文件中使用了不同的编码(例如 cp1252 ,这是默认的Windows编码),当你输入 utf-8 时会出现乱码(所以,PyDev并不是真的乱码了,但事实上它以前是另一种编码)。

当你在这里时,还要确保你还将Eclipse的默认编码设置为 utf-8 (通常是默认的平台编码) - 你可以在偏好>一般>工作区

作为备注,我认为最常见的评论方式是#coding: utf-8,然后是#-*- coding: utf-8 -*-(即:#encoding:utf-8) - 尽管所有这些格式都有效(请参阅pep:https://www.python.org/dev/peps/pep-0263/