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

Python中如何将特定Unicode字符转为方块字符显示?

解决pandas.read_html抓取表格的字符乱码问题

原因分析

你遇到的是字符编码不匹配导致的乱码(Mojibake):网页中的特殊字符█(U+2588)和▀(U+2580)的UTF-8字节序列(\xe2\x96\x88和\xe2\x96\x80)被pandas用错误的编码(比如Windows-1252/ISO-8859-1)解码,从而变成了â\x96\x88和â\x96\x80这类乱码字符。

修复方法

方法1:读取时直接指定正确编码

如果能确定网页的编码(比如从网页源码的<meta charset="utf-8">标签确认),在read_html中直接指定encoding参数:

import pandas as pd
# 替换为你的网页URL或本地HTML路径
dfs = pd.read_html("https://example.com/table-page", encoding="utf-8")
df = dfs[0]

方法2:批量修复已读取的DataFrame乱码

如果读取时没指定编码,已经得到了乱码的DataFrame,可通过重新编码解码修复:

def fix_encoding(text):
    # 仅处理字符串类型数据
    if isinstance(text, str):
        # 将乱码字符串按错误编码(Windows-1252)转回字节,再用UTF-8解码
        return text.encode("windows-1252").decode("utf-8")
    return text

# 应用到整个DataFrame的所有单元格
df_fixed = df.applymap(fix_encoding)

验证修复结果

处理后可以直接打印查看:

print(df_fixed)

此时â\x96\x88会显示为█,â\x96\x80会显示为▀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:22:08