如何使用MySQLdb插入cp1252字符?

时间:2018-12-18 08:00:51

标签: python-2.7 character-encoding mysql-python cp1252

当我尝试使用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相同。

1 个答案:

答案 0 :(得分:0)

您真的需要cp1252,而不是utf-8吗? 我强烈建议使用utf-8。

您需要的是:

  • charset="utf8mb4"选项传递给MySQLdb.connect()
  • 配置数据库以使用utf-8。

您可以通过CREATE DATABASE <your db name> DEFAULT CHARACTER SET utf8mb4使用utf-8创建数据库。

如果您已经有数据库,则可以通过ALTER DATABASE <your db name> CHARACTER SET utf8mb4更改默认字符集。但是您也需要更改数据库中现有表的所有字符集。