字符串包含 unicode,因此无法打印,导致 UnicodeDecodeError

问题描述

我正在尝试在 Python 2.7 中打印一个字符串,但该字符串包含字符“(150\xb5s)”并且它无法打印 x5bs,因此它给出了该字符串位置的错误

UnicodeEncodeError: "ascii" codec can't encode character u'\xb5' 
string_print = "29 days in (F150\xb5s)"
with open("testing_file.txt","w") as fill:
    fill.write(string_print)

我尝试从 stackoverflow 解决方案中执行此操作,但仍然出现相同的错误

string_print = "29 days in (F150\xb5s)"

with open("testing_file.txt","w") as fill:
    fill.write(string_print.decode("utf-8"))

使用原始字符串方法有效,但问题是 string_print 可以包含任何字符串,因为我只是将一个很长的程序缩短以更好地隔离问题。那么有没有办法让变量 string_print 成为原始字符串的一部分。如果我只做“29 天 in (F150\xb5s)”的原始字符串,它就可以工作。

r"29 days in (F150\xb5s)"

但是 string_print 可以是任何类型的字符串

解决方法

我已经找到了解决此问题的方法。基本上我们可以使用repr(string_print)来解决这个问题。

string_print = "29 days in (F150\xb5s)"
with open("testing_file.txt","w") as fill:
    fill.write(repr(string_print))