字符串包含 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))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...