【发布时间】:2016-10-07 02:17:18
【问题描述】:
这让我发疯,我尝试了来自社区的不同建议,但似乎不起作用。我什至尝试仅使用 utf-8 重新创建数据库,但它仍然给我这个错误。
基本上我正在使用 pymysql 模块并写入数据库。
openconnect = pymysql.connect(host='xxxx',port=3306,user='xxx',passwd='xxx',db='xxxx')
opencursor = openconnect.cursor()
我的一个专栏有问题,基本上我尝试了这些选项...
导致问题的列是主题,我尝试了以下
subject = (df.Subject[i])
subject.encode('latin-1', 'ignore')
然后尝试写入失败的数据库。
如果我尝试subject.encode('latin-1') 也会失败。
我有两个选择,要么修复编码,要么如何在 pymysql 上设置联盟以使用 utf-8?我验证了数据库,mysql上的联盟设置为utf-8。非常感谢您对此的意见..
仍在为此苦苦挣扎。 干杯 卡比尔
【问题讨论】:
-
以某种方式形成问题主题 = (df.Subject[i]) 并在下一行 subject.encode('latin-1', 'ignore')
-
# -*- coding: utf-8 -*-在脚本顶部添加这一行。 -
我刚刚尝试过.. 仍然出现同样的错误
-
sql = sql.encode(self.encoding, 'surrogateescape') UnicodeEncodeError: 'latin-1' codec can't encode character '\u2013' in position 637: ordinal not in range(256)
-
@MarlonAbeykoon: 1-
subject不是文字字符串,因此# -*- coding: utf-8 -*-等编码声明对其没有影响。该声明可能仅影响源中字符串文字中的字符。 2-即使它确实影响了它;没关系:'\u2013'是一个仅包含 ascii 字符的字符串文字(unicode 字符使用 unicode 转义序列表示)。 latin-1 和 utf-8 在 ascii 范围内没有区别。
标签: python python-3.x python-2.7 utf-8 iso-8859-1