簡體   English   中英

Eclipse + PyDev中的Unicode字符串容限

[英]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)

此問題應在PyDev 3.4.0中修復(尚未發布)。 Fabio(PyDev維護者)說: “從現在開始,PyDev將僅設置PYTHONIOENCODING,並且將不再更改默認編碼” 從Python 2.6 PYTHONIOENCODING就支持PYTHONIOENCODING

這是GitHub上提交

嘗試添加# -*- 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM