是否有等同于python str()的utf-8编码?
我有一个函数,应该在Python程序的屏幕上打印一个变量。通常,我会这样做:
mystring = str(variable)
然后我用这个命令把mystring打印到程序的屏幕上:
g.es(mystring)
我不知道这个变量会是什么,所以我必须先用str(variable)把它转换成字符串。它可以是一个列表、字典、整数,或者其他任何东西。
这之前一直运行得很好,直到我在myvalue里面用了某些非ASCII字符。这样的话,函数就会出现以下的unicode编码错误:
UnicodeencodeError: 'ascii' codec cant decode character ...
如果我使用:
mystring = unicode(variable,utf-8)
这样不行,因为变量可能是一个列表,而unicode()只接受字符串。而且我也不能出于显而易见的原因用str(variable)。
有没有什么函数可以把任何变量转换成utf-8格式,还是说我应该为这个目的自己写一个函数?谢谢!
1 个回答
3
你需要先检查一下类型,我很抱歉:
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
流中判断应该使用什么编码,然后再进行编码。