使用Python脚本批量转换网页文件编码为UTF-8

 更新时间:2026年01月23日 08:24:20   作者:weixin_46244623  
文章介绍了一个自动化脚本,用于将通过浏览器另存为功能保存的网页文件从GBK转换为UTF-8编码,以解决中文乱码问题,并保持源目录结构,该脚本支持文本和二进制文件的处理,易于使用和扩展,需要的朋友可以参考下

一、背景与痛点

当我们使用浏览器的“另存为”功能保存网页时,经常会遇到以下问题:

  • 保存下来的 HTML、CSS、JS 文件使用的是本地编码(如 GBKGB2312);
  • 在现代开发环境或服务器中,UTF-8 是标准编码;
  • 直接使用这些文件会导致 中文乱码,影响阅读或部署;
  • 手动逐个转换效率极低,尤其当网页包含大量资源文件(图片、脚本、样式表)时。

为此,我编写了一个 自动化脚本,可一键完成:
✅ 自动检测原始编码
✅ 将文本文件转为 UTF-8
✅ 二进制文件(如图片)原样复制
✅ 完整保留源目录结构

二、核心思路

  1. 遍历源目录下所有文件;
  2. 根据文件扩展名判断是否为文本文件;
  3. 对文本文件:
    • chardet 检测原始编码;
    • 解码后以 UTF-8 重新写入目标目录;
  4. 对非文本文件(如图片):
    • 直接二进制复制,不做任何修改;
  5. 使用相对路径保持目录结构一致。

三、完整可运行代码

将以下代码保存为 convert_webpage_to_utf8.py,放在与你的网页文件夹同级目录下即可运行:

import os
import chardet
import shutil

# ========== 配置区 ==========
SRC_DIR = "另存的网页"      # 源文件夹(请确保此目录存在)
DST_DIR = "output_utf8"     # 输出文件夹(脚本会自动创建)

# 被视为“文本文件”的扩展名(会进行编码转换)
TEXT_EXTS = (
    ".html", ".htm", ".css", ".js", ".txt", ".json", ".xml", ".下载"
)

# ========== 工具函数 ==========
def ensure_dir_for_file(path):
    """确保文件所在目录存在"""
    dir_path = os.path.dirname(path)
    if dir_path:
        os.makedirs(dir_path, exist_ok=True)

def convert_text(src_path, dst_path):
    """将文本文件转为 UTF-8"""
    with open(src_path, "rb") as f:
        raw = f.read()

    # 自动检测编码,失败时 fallback 到 gb18030(兼容 GBK/GB2312)
    result = chardet.detect(raw)
    enc = result.get("encoding") or "gb18030"

    try:
        text = raw.decode(enc, errors="ignore")  # 忽略非法字符
        ensure_dir_for_file(dst_path)
        with open(dst_path, "w", encoding="utf-8") as f:
            f.write(text)
        print(f"✅ 文本 {src_path} [{enc}] → UTF-8")
    except Exception as e:
        print(f"❌ 文本失败 {src_path}: {e}")

def copy_binary(src_path, dst_path):
    """直接复制二进制文件"""
    try:
        ensure_dir_for_file(dst_path)
        shutil.copyfile(src_path, dst_path)
        print(f"📦 二进制 {src_path} → 原样拷贝")
    except Exception as e:
        print(f"❌ 拷贝失败 {src_path}: {e}")

# ========== 主逻辑 ==========
if __name__ == "__main__":
    if not os.path.exists(SRC_DIR):
        print(f"❌ 源目录 '{SRC_DIR}' 不存在,请检查!")
        exit(1)

    for root, _, files in os.walk(SRC_DIR):
        for name in files:
            src = os.path.join(root, name)
            rel = os.path.relpath(src, SRC_DIR)   # 获取相对于源目录的路径
            dst = os.path.join(DST_DIR, rel)      # 构建目标路径

            lower = name.lower()
            if lower.endswith(TEXT_EXTS):
                convert_text(src, dst)
            else:
                copy_binary(src, dst)  # 非文本文件一律原样拷贝

    print(f"\n🎉 处理完成!结果已保存至 '{DST_DIR}' 目录。")

四、使用方法

安装依赖(首次运行需要):

pip install chardet

准备数据

  • 将你从浏览器“另存为”的整个网页文件夹重命名为 另存的网页(或修改脚本中的 SRC_DIR);
  • 确保该文件夹与脚本在同一目录下。

运行脚本

python convert_webpage_to_utf8.py

查看结果

  • 所有文件将被复制到 output_utf8/
  • 文本文件已转为 UTF-8 编码,中文不再乱码;
  • 图片、图标等资源保持原样。

五、注意事项

  • .下载 文件处理:某些浏览器(如 Chrome)会生成 .xxx.download 临时文件,若其内容是 HTML/JS,也应转码;
  • 编码识别容错chardet 对短文本可能不准,但对完整网页通常可靠;fallback 使用 gb18030 覆盖绝大多数中文场景;
  • 安全策略:非文本文件一律不处理,避免损坏图片、字体等二进制资源;
  • 扩展支持:如需处理 .md.csv 等,只需在 TEXT_EXTS 中添加对应后缀。

六、结语

这个脚本已在多个实际项目中验证,能高效解决“另存网页中文乱码”这一常见痛点。代码简洁、健壮、易修改,适合集成到自动化流程中。

到此这篇关于使用Python脚本批量转换网页文件编码为UTF-8的文章就介绍到这了,更多相关Python网页文件编码转UTF-8内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你如何使用Python开发一个钉钉群应答机器人

    教你如何使用Python开发一个钉钉群应答机器人

    在聊天工具大肆侵入我们生活各个方面的今天,各种消息无时无刻不在侵扰我们的每一寸时间,这种情况下,一个聊天的机器人就很有必要了.今天,我们来学习一下使用 Python 开发一个钉钉的应答机器人,助你「人生苦短,少回消息」,需要的朋友可以参考下
    2021-06-06
  • python转换wrf输出的数据为网页可视化json格式

    python转换wrf输出的数据为网页可视化json格式

    这篇文章主要介绍了python转换wrf输出的数据为网页可视化json格式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python实现批量读取图片并存入mongodb数据库的方法示例

    Python实现批量读取图片并存入mongodb数据库的方法示例

    这篇文章主要介绍了Python实现批量读取图片并存入mongodb数据库的方法,涉及Python文件读取及数据库写入相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • 基于Python的网页自动化工具DrissionPage的使用详解

    基于Python的网页自动化工具DrissionPage的使用详解

    DrissionPage 是一个基于 python 的网页自动化工具,它既能控制浏览器,也能收发数据包,还能把两者合而为一,下面就跟随小编一起来学习一下它的具体使用吧
    2024-01-01
  • 同时安装了 Python 3.8.20 和 Python 3.12.3如何指定默认版本(最新整理)

    同时安装了 Python 3.8.20 和 Python 3.12.3

    文章介绍了在Linux系统中通过update-alternatives管理多个Python版本的方法,指导如何选择默认版本并解决切换时的错误问题,同时提到Windows环境下需采用其他方式调整默认Python版本,感兴趣的朋友一起看看吧
    2025-07-07
  • 将数据集制作成VOC数据集格式的实例

    将数据集制作成VOC数据集格式的实例

    今天小编就为大家分享一篇将数据集制作成VOC数据集格式的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python如何使用matplotlib绘制柱状图

    Python如何使用matplotlib绘制柱状图

    这篇文章主要介绍了Python如何使用matplotlib绘制柱状图问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python arrow 更好的日期时间模块

    Python arrow 更好的日期时间模块

    这篇文章主要为大家介绍Python的arrow日期时间模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • OpenCV+OCR实现弧形文字识别的示例代码

    OpenCV+OCR实现弧形文字识别的示例代码

    本文主要介绍了OpenCV+OCR实现弧形文字识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • 基于PyQt5制作一个gif动态图片生成器

    基于PyQt5制作一个gif动态图片生成器

    这篇文章主要介绍了基于PyQt5实现的gif动态图片生成器,这个小工具制作的目的是为了将多张图片组合后生成一张动态的GIF图片。需要的可以参考一下
    2022-01-01

最新评论