[英]unicode string tolerance in Eclipse+PyDev
我正在使用Eclipse + PyDev編寫代碼,並將此代碼移至生產環境時經常遇到unicode問題。 這個小例子說明了原因
a = u'фыва '\
'фыва'
如果Eclipse看到此消息,它將創建unicode字符串,就像什么都沒發生,但是如果直接向Python shell(Python 2.7.3)輸入相同的命令,則會得到以下信息:
SyntaxError: (unicode error) 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)
因為正確的代碼是:
a = u'фыва '\
u'фыва'
但是由於Eclipse + PyDev的“寬容”,我總是遇到麻煩:(如何強制PyDev“遵循規則”?
發生這種情況是因為控制台的編碼是utf-8。
盡管您可以通過以下方式進行更改,但目前無法在用戶界面中進行全局設置: \\plugins\\org.python.pydev_2.7.6\\pysrc\\pydev_sitecustomize\\sitecustomize.py
只需刪除對以下內容的調用:(第108行)sys.setdefaultencoding(encoding)
嘗試添加# -*- coding: utf-8 -*-
作為源文件的第一行。 它應該使Python表現良好。
這在我的源代碼中為我解決了問題,而無需修改pydev sitecustomize.py文件:
import sys
reload(sys).setdefaultencoding("utf-8")
您可以使用“ ascii”或任何其他想要使用的編碼。
就我而言,當我在命令行上運行程序時,PyDev使用的是“ utf-8”,而控制台則錯誤地設置了“ ascii”。
這可能不是您要的。 但就我而言,我偶然從各種來源復制了我的代碼,從而得到了這些UTF-8字符。 為了找出我在Eclipse火星上造成麻煩的角色:
Edit->set encoding
other->US ASCII
然后我嘗試保存我的文件。 我看到了模態窗口,告訴我“保存問題”。 有一個按鈕"Select First Character"
它向我顯示了令人煩惱的字符,我剛剛刪除了該字符並鍵入了ASCII碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.