是否有等同于python str()的utf-8编码?

1 投票
1 回答
3674 浏览
提问于 2025-04-18 04:14

我有一个函数,应该在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 流中判断应该使用什么编码,然后再进行编码。

撰写回答