【问题标题】:'latin-1' codec can't encode character u'\u2014' in position 23: ordinal not in range(256)'latin-1' 编解码器无法在位置 23 对字符 u'\u2014' 进行编码:序数不在范围内(256)
【发布时间】:2015-02-13 18:49:31
【问题描述】:

我正在将数据从 Excel 工作簿加载到 Pandas 数据框中,并在出现上述错误时尝试将其推送到数据库。

起初我以为数据库的排序有问题,我改为utf8_bin

接下来我检查了我的数据库引擎创建语句,我也为编码添加了一个参数。

engine = create_engine('mysql+pymysql://root@localhost/test', encoding="utf-8")

但是这些东西都不起作用我仍然从该行中得到错误:

df.to_sql("strand", engine, if_exists="append", index=False)

我检查了 to_sql 方法是否有编码参数,但似乎不是这样。

【问题讨论】:

    标签: mysql excel utf-8 pandas latin1


    【解决方案1】:

    显然我需要将 ?charset-utf8 添加到查询字符串以及导致我最终使用引擎创建语句的编码变量中

    engine = create_engine('mysql+pymysql://root@localhost/test?charset=utf8', encoding="utf-8")
    

    【讨论】:

    • 非常感谢您发布自己的答案。我花了很多时间来弄清楚这一点。现在可以了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多