我有一个函数可以在python程序的屏幕上打印变量。 通常,我这样做:
mystring = str(variable)
然后我用它的命令在程序的屏幕上打印mystring:
g.es(mystring)
我不知道变量是什么,这就是为什么我必须先做str(变量)。 它可以是列表,字典,整数,任何东西。
这是完美的工作,直到我在myvalue中使用了一些非ascii字符。 在这种情况下,该函数显示以下unicode编码错误:
UnicodeencodeError: 'ascii' codec cant decode character ...
如果我使用:
mystring = unicode(variable,utf-8)
不工作,因为变量可以是列表,而unicode()只接受字符串。而且由于显而易见的原因,我不能做str(变量)。
是否有任何函数会使用utf-8转换任何变量,还是应该为此创建特定的变量? 谢谢!
答案 0 :(得分:2)
我不得不测试这种类型,我担心:
def to_utf8_string(val):
if not isinstance(val, basestring):
return str(val)
if not isinstance(val, str):
val = val.encode('utf8')
return val
这几乎是print()
命令的作用,尽管它在编码之前会检测sys.stdout
流中要使用的编码。