我花了几个小时的时间来寻找Unicode字符串的问题,这些字符串被分解为Python(2.7)隐藏的东西,我仍然不明白.首先,我尝试u".."
在我的代码中使用一致的字符串,但这导致臭名昭着UnicodeEncodeError
.我尝试过使用.encode('utf8')
,但这也无济于事.最后,事实证明我不应该使用任何一个,它都可以自动完成.然而,我(这里我需要赞扬一位帮助过我的朋友)确实注意到一些奇怪的事情,同时我的头靠在墙上.sys.getdefaultencoding()
返回ascii,同时sys.stdout.encoding
返回UTF-8.1.在下面的代码中工作正常,没有任何修改sys
和2.提出一个UnicodeEncodeError
.如果我更改默认的系统编码 reload(sys).setdefaultencoding("utf8")
,那么2.工作正常.我的问题是为什么两个编码变量首先是不同的,如何在这段简单的代码中设法使用错误的编码?请不要把我发送到Unicode HOWTO,我已经在很多问题中看到了这一点UnicodeEncodeError
.
# -*- coding: utf-8 -*-
import sys
class Token:
def __init__(self, string, final=False):
self.value = string
self.final = final
def __str__(self):
return self.value
def __repr__(self):
return self.value
print(sys.getdefaultencoding())
print(sys.stdout.encoding)
# 1.
myString = "I need 20 000€."
tok = Token(myString)
print(tok)
reload(sys).setdefaultencoding("utf8")
# 2.
myString = u"I need 20 000€."
tok = Token(myString)
print(tok)
Run Code Online (Sandbox Code Playgroud)