mysql - 网站显示 � 即使我正在使用 utf-8

标签 mysql encoding utf-8 pymysql

我正在使用 pymysql 将以下内容插入到我的测试表中。 首先,我设置连接并指定字符集并将 unicode 设置为 True:

conn=pymysql.connect(host=*ip*,user='simao_simao',password=*mypass*,database=*mydatabase*,use_unicode=True, charset="utf8")

然后我成功地将值插入到我的表中。

cur = conn.cursor()
sql = "Insert into test (colx, coly) Values('%s', 'not_relevant')"%(tag)
>>> sql
"Insert into test (colx, coly) Values('£26,302 - £35,225 + 20% R','not_relevant')"
>>> cur.execute(sql)
1

My table is utf-8 unicode ready

我的html代码包括:

meta charset="UTF-8"

我的网页中仍然显示 � 符号而不是 £。知道可能出了什么问题吗?

最佳答案

https://stackoverflow.com/a/38363567/1766831

按照 SELECT ... HEX... 的调试提示查看 £ 是否正确存储为 C2A3 (utf8) ,而不是 A3 (latin1) 或 C382C2A3 (双编码)。

提供SHOW CREATE TABLE来验证该列是utf8还是utf8mb4。

验证代码以# -*-coding: utf-8 -*-开头,以便编码为utf8。 (这涵盖了黑钻石的可能原因之一;请参阅链接。)

如果这还不够,请在此处查看更多 Python 注释: http://mysql.rjweb.org/doc.php/charcoll#python

关于mysql - 网站显示 � 即使我正在使用 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320595/

相关文章:

python - 用python生成sql文件(对于mysql)

MySQL存储过程?

java - 将编码开关传递给 Gradle "JavaExec"任务的 JVM

java - DOM4J utf-8 编码 Umlaute(Ä,ü,ß) 错误

java - Apache/Tomcat服务器中显示汉字

mysql - SQL 中的高级过滤器

mysql - 优化MySQL操作以获取计数

c++ - 将 3 个数字数据压缩为一个字节

sql-server-2005 - SQL Server 2005 T-SQL 中的 Base64 编码

python - 为什么 codecs.iterdecode() 吃空字符串?