我正在开发一个网站,使用 Python 来预处理请求,并使用 MySQL 数据库来存储信息。
我所有的表都是 utf8,我也使用 utf8 作为内容类型。
我有这段代码来建立与数据库的连接:
database_connection = MySQLdb.connect(host = database_host, user = database_username, passwd = database_password, db = database_name, use_unicode = True)
cursor = database_connection.cursor()
cursor.execute("""SET NAMES utf8;""");
cursor.execute("""SET CHARACTER SET utf8;""");
cursor.execute("""SET character_set_connection=utf8;""");
在我的 GoDaddy 主机上运行一个简单的测试,打印一个简单的 SELECT 查询的结果,如下所示:
print results.encode("utf-8")
显示双重编码的字符串。 (因此所有非 ascii 字符都转换为两个不同的特殊字符)。但是如果我离开编码语句,它会为每个非 ascii 字母给出编码错误。
最佳答案
听起来好像 results
包含一个 Unicode 字符串,它是从来自数据库的字节字符串中错误解码的。 IE。当您从数据库中读取数据时,它会将字节字符串解码为 Latin-1,而不是实际的 UTF-8。
因此,如果您修复了数据库内容的解码,那么您就应该开始工作了。
关于python - 如何解决这种双重编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168440/