python - 如何解决这种双重编码?

标签 python mysql

我正在开发一个网站,使用 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/

相关文章:

python - Django:针对不同用户的 1 个 View ?

python - 在 Python 中交错两个 numpy 数组的行

MySql - 嵌套选择 - 如何从第一个表中选择值?

mysql - 表中的多个主键

python - 在 Python 中解析数字

javascript - 在谷歌地图上添加多个标记

python - 打印乐谱 - Pygame

php - 如何使用复选框和 html 选择的组合将多条记录插入 mysql 数据库

mysql - 从重复记录中过滤以获取 MYSQL 中的单个记录

mysql - MariaDB 使用通配符主机授予权限不起作用