【发布时间】:2019-05-18 14:39:20
【问题描述】:
当我尝试使用 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 West European。因此,我认为 latin1 也将涵盖 cp1252 字符。但是 latin1 不会覆盖 cp1252 字符,如果它们覆盖,我将不会得到错误。
右双引号位于 cp1252 字符集中,但不在 ISO 8859-1(或 latin1)字符集中。
/usr/share/mysql/charsets/ 中没有 cp1252.xml 文件。为什么 python MySQLdb 缺少 cp1252 字符集?
或者latin1 是否与cp1252 相同,如index.xml 中所述。
【问题讨论】:
-
"python MySQLdb 使用 latin-1 编解码器" 这个假设是错误的。当您
connect()到数据库时,它将使用您配置的任何编码。你只是没有配置任何东西。 -
@Tomalak 默认情况下,它采用 latin1 代码。我的错误是
UnicodeEncodeError: 'latin-1' codec can't encode character -
@Tomalak 这不是重复的。我已经说过我不想使用 'utf8' 作为字符集。是否可以将字符集设置为 cp1252?
-
再次阅读我的第一条评论。
标签: python-2.7 character-encoding mysql-python cp1252