是否有任何与utf-8编码等效的python str()?

时间:2014-04-25 14:07:31

标签: python string unicode utf-8

我有一个函数可以在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转换任何变量,还是应该为此创建特定的变量? 谢谢!

1 个答案:

答案 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流中要使用的编码。