当我尝试使用python MySQLdb插入右双引号(“)时,会产生UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201d' in position 0: ordinal not in range(256)
。 python MySQLdb默认情况下使用latin-1编解码器,在/usr/share/mysql/charsets/
中的index.xml文件中,其描述为cp1252西欧。因此,我认为latin1也将涵盖cp1252字符。但是latin1不会覆盖cp1252字符,如果不包含,我将不会收到错误消息。
右双引号位于cp1252字符集中,但不在ISO 8859-1(或latin1)字符集中。
cp1252.xml
中没有/usr/share/mysql/charsets/
文件。为什么python MySQLdb缺少cp1252字符集?
或者latin1
是否与cp1252
中所述的index.xml
相同。
答案 0 :(得分:0)
您真的需要cp1252,而不是utf-8吗? 我强烈建议使用utf-8。
您需要的是:
charset="utf8mb4"
选项传递给MySQLdb.connect()
。您可以通过CREATE DATABASE <your db name> DEFAULT CHARACTER SET utf8mb4
使用utf-8创建数据库。
如果您已经有数据库,则可以通过ALTER DATABASE <your db name> CHARACTER SET utf8mb4
更改默认字符集。但是您也需要更改数据库中现有表的所有字符集。