当我试图使用python MySQLdb插入正确的双引号(“)时,它会生成UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201d' in position 0: ordinal not in range(256)。python MySQLdb默认使用拉丁文-1编解码器,从/usr/share/mysql/charsets/中的index.xml文件中可以看出,它被描述为cp1252西欧。因此,我认为latin1也将涵盖cp1252字符。但是latin1不会覆盖cp1252字符,如果它们覆盖了,我将不会得到错误。
正确的双引号位于cp1252字符集中,而不是在ISO8859-1(或latin1)字符集中。
在cp1252.xml中没有/usr/share/mysql/charsets/文件。为什么python MySQLdb缺少cp1252字符集?
或者latin1是否与他们在index.xml中描述的cp1252相同。
发布于 2018-12-20 03:47:52
你真的需要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更改默认字符集。但是,您也需要更改数据库中现有表的所有字符集。
https://stackoverflow.com/questions/53828618
复制相似问题