我嘗試在NetBeans 6.9在NetBeans的Unicode字符串測試的Python控制檯程序6.9
s = u"\u00B0 Celsius"
print u"{0}".format(s)
運行下面簡單的代碼,但我得到了以下錯誤:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 0: ordinal not in range(128)
我嘗試在NetBeans 6.9在NetBeans的Unicode字符串測試的Python控制檯程序6.9
s = u"\u00B0 Celsius"
print u"{0}".format(s)
運行下面簡單的代碼,但我得到了以下錯誤:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 0: ordinal not in range(128)
的NetBeans的控制檯顯然ISN」 t正確設置以處理打印非ASCII unicode字符串。
一般來說,您應該避免先打印unicode字符串而不明確編碼它們(例如u_str.encode(some_codec
)。
在特定情況下,你可能只逃脫:
print u'{0}'.format(s).encode('utf-8')
你說你想編碼unicode字符串。假設你想UTF-8編碼的使用:
s.encode( 'UTF-8')
這裏的結果:'A°Celsius'。這可能是一個NetBeans控制檯問題。直接在控制檯上執行此操作(或直接寫入文件)不會產生額外的''。 – Kit 2010-08-12 09:03:52
然後,NetBeans不希望其輸出以utf-8編碼。根據你在那裏得到的結果,它似乎想要ISO-8859-1(你可以通過編碼來看到正確的結果)。這可能是可配置的,儘管我自己並不瞭解NetBeans。 – habnabit 2010-08-12 09:07:34
如'some_file.write(u'{0}'格式)寫入文件'會導致相同的錯誤,除非我也使用'.encode('utf-8')'。儘管如此,ISO-8859-1的編碼效果不錯。 – Kit 2010-08-12 13:51:56