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

Python读取含波兰语CSV生成HTML报告的编码错误求助

解决CSV读取与HTML生成的编码冲突问题

问题根源

你的CSV文件采用ISO-8859-2编码(波兰语常用编码),但HTML标准推荐使用UTF-8编码,两者不匹配导致读取、写入时出现编码错误,以及浏览器渲染乱码。

分步解决方案

  1. 正确读取CSV文件
    明确指定CSV的编码为ISO-8859-2,确保pandas正确解析波兰语特殊字符:

    df = pd.read_csv("Średnie wyniki oceny użytkowości rozpłodowej loch dla rasy puławskiej.csv", sep=";", encoding="ISO-8859-2")
    
  2. 生成UTF-8编码的HTML内容
    在HTML头部添加meta标签指定字符编码为UTF-8,同时让df.to_html()生成UTF-8格式的表格内容:

    html = f"""
    <HTML lang="pl">
    <head>
    <meta charset="UTF-8">
    <title>some title</title>
    </head>
    <style type="text/css">
    some style
    </style>
    <body>
    some text
    {df.to_html(index=False, encoding='UTF-8')}
    some text
    </body>
    </html>
    """
    

    这里的encoding='UTF-8'参数会让pandas把表格内容转换为UTF-8编码的字符串,避免后续写入时的编码冲突。

  3. 以UTF-8编码写入HTML文件
    打开文件时明确指定编码为utf-8,确保整个HTML文件以UTF-8格式保存:

    with open('report.html', 'w', encoding='utf-8') as f:
        f.write(html)
    

    给文件名加上.html后缀,方便浏览器直接识别并正确渲染。

为什么之前的尝试失败?

  • 写入用UTF-8但乱码:因为HTML头部没有指定charset="UTF-8",浏览器默认用系统编码(如Windows-1250)解析UTF-8文件,导致乱码。
  • 写入用ISO-8859-2表格乱码:df.to_html()默认生成Unicode字符串,其中可能包含ISO-8859-2不支持的字符(比如\x8c),导致编码失败;同时浏览器若用UTF-8解析ISO-8859-2文件,也会出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:42:58