2013-02-22 50 views
0

我將我的項目中的每個py腳本編碼爲utf-8,因爲我們肯定將我們的應用程序從Jython 2.2.1遷移到Jython 2.5.2。出於這個原因,我在每個py文件的第一行添加了一個'魔術註釋'(#encoding=utf-8),並且我已經開始通過在Eclipse中調試應用程序來測試一切是否正常。編碼 - Pydev自動更改字符

問題出現在包含字符串straße的腳本中,因爲它會自動轉換爲straße

我的疑問是,如果這種變化是由Pydev引起的,或者它發生是因爲utf-8不包括這類字符。 我能做些什麼來自動避免這個問題,我還沒有發現其他'奇怪的'字符串?

回答

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() 
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/