在python中编码/解码字符串

时间:2012-01-03 12:09:42

标签: python encoding

我有一个返回utf-16编码字符串的函数,我必须通过替换将其结果包含在另一个字符串中:

string = myfunc()

debug_string = debug_string.replace("$rep$", string)

在我的eclipse环境中它工作正常,但在另一个环境中它会出错:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 23: ordinal not in range(128)

你知道可能的原因是什么吗?

由于

3 个答案:

答案 0 :(得分:2)

您的string变量不是Unicode?然后,您需要显式解码从string(字符串类型)到Unicode对象的字节序列(以UTF-16编码):

u_string = myfunc().decode('utf-16')

debug_string也应该是Unicode。

答案 1 :(得分:0)

尝试:

string = myfunc()

debug_string = debug_string.replace("$rep$", string).encode('utf-16')

或者:

string = myfunc()

debug_string = debug_string.replace("$rep$", string).decode('utf-16')

答案 2 :(得分:0)

如果可能,请一直使用unicodes。如果您无法更改myfunc,请至少将其结果转换为unicode:

string = myfunc().decode('utf-16')

如果您的debug_string已经是unicode,则无需更改任何其他内容。否则使用适当的编解码器对其进行解码。