You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用offline.plot可视化数据时遭遇UnicodeEncodeError错误求助

解决Plotly offline.plot的UnicodeEncodeError问题

运行上述掷骰子统计可视化代码时,调用offline.plot()保存HTML文件会触发UnicodeEncodeError: 'charmap' codec can't encode character '\u25c4'错误——原因是Windows系统默认使用charmap编码(如GBK),无法处理Plotly生成的部分Unicode字符,而offline.plot()本身没有提供指定编码的参数。

以下是几种可行的解决办法:

  • 方法一:手动生成HTML内容后写入文件(推荐)
    绕过offline.plot()的自动写文件逻辑,先获取HTML字符串,再用UTF-8编码手动写入文件。修改代码末尾的offline.plot调用部分:

    # 生成HTML内容,不直接保存文件
    html_content = offline.plot({'data': data, 'layout': my_layout}, output_type='div')
    # 以UTF-8编码写入文件
    with open('d6.html', 'w', encoding='utf-8') as f:
        f.write(html_content)
    

    这个方法不需要修改Plotly源码,兼容性最好,后续更新Plotly也不会失效。

  • 方法二:修改Plotly offline模块源码(临时解决)
    找到Python安装目录下plotly/offline/offline.py文件,定位到plot函数中写文件的代码块(通常是with open(filename, 'w') as f:这一行),将其修改为:

    with open(filename, 'w', encoding='utf-8') as f:
    

    强制用UTF-8编码写入文件,就能处理所有Unicode字符。缺点是Plotly版本更新后需要重新修改。

  • 方法三:全局设置默认编码(不推荐)
    在代码开头添加以下代码,强制将系统输出编码设为UTF-8:

    import sys
    import codecs
    sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer)
    

    这种方法可能会影响其他依赖系统编码的程序输出,仅作为备选方案。

内容的提问来源于stack exchange,提问作者Justas Vasiljevas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:30:43