0

当我尝试使用 python MySQLdb 插入右双引号 (”) 时,它会生成UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201d' in position 0: ordinal not in range(256). python MySQLdb 默认使用 latin-1 编解码器,从 中的 index.xml 文件中/usr/share/mysql/charsets/,它被描述为 cp1252 West European。因此,我认为 latin1 也将涵盖 cp1252 字符。但是 latin1 不会覆盖 cp1252 字符,如果它们覆盖,我将不会收到错误。

右双引号位于 cp1252 字符集中,但不在 ISO 8859-1(或 latin1)字符集中。

中没有cp1252.xml文件/usr/share/mysql/charsets/。为什么 python MySQLdb 缺少 cp1252 字符集?

或者是否与他们在中描述的latin1相同。cp1252index.xml

4

1 回答 1

0

你真的需要cp1252,而不是utf-8?我强烈推荐使用 utf-8。

你需要的是:

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

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

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

于 2018-12-20T03:47:52.413 回答