记事本保存html中文乱码的根本原因是默认ansi编码与utf-8声明不匹配,必须在“另存为”时手动选utf-8编码,并确保与文件实际编码一致;浏览器双击打开受限于file://协议,建议用本地服务器运行。

保存 HTML 源码时编码选错,中文直接变乱码
Windows 记事本默认用 ANSI(其实是 cp1252 或本地代码页)保存,一写中文就显示为问号或方块。这不是文件损坏,是解码错位。
必须显式指定 UTF-8 编码:
- 在记事本“另存为”对话框里,把“编码”下拉菜单手动改成
UTF-8(不是UTF-8-BOM,除非你明确需要 BOM) - 用 VS Code / Sublime 等编辑器时,右下角状态栏点编码名 → 选
Save with Encoding→UTF-8 - 命令行生成文件时,
echo或重定向不带编码控制,务必用python -c "open('a.html','w',encoding='utf-8').write(...)"这类方式
用浏览器双击打开却空白或报错:file:// 协议限制
本地双击运行走的是 file:// 协议,不是 http://。很多现代功能被浏览器主动禁用:
-
fetch()、XMLHttpRequest请求本地文件或跨域资源会触发CORS错误 -
import前端模块(.js文件)会被拒绝,报Not allowed to load local resource - 部分 CSS
@import或字体文件路径解析失败,尤其用了绝对路径(如/css/style.css)
临时解决:把所有路径改成相对路径(./css/style.css),并确认文件夹结构一致;长期方案是起个本地服务器,比如 npx serve 或 python3 -m http.server 8000。
保存的是渲染后 DOM 而非原始 HTML,导致逻辑异常
你在开发者工具 Elements 面板里右键 Copy outerHTML,得到的是 JS 执行后的最终 DOM——可能含动态插入的广告、水印、隐藏节点,甚至缺失原始 <script></script> 标签(因已被执行或移除)。
要原始源码,必须用以下任一方式:
- 按
Ctrl+U(或Cmd+Option+U)打开源码页,再Ctrl+S直接保存 - 在开发者工具
Network面板刷新页面,找Type是document的请求,右键 →Save as - 命令行用
curl -s https://example.com > page.html(注意:不带 JS 渲染,但最接近服务端返回)
离线打不开图片/CSS/JS:路径和资源没一起下载
只保存一个 .html 文件,等于只抓了“骨架”。所有 href、src 引用的外部资源(CSS、JS、图片、字体)都还在网上,本地打开自然 404。
有三种应对层级:
- 最简:把所有资源路径改为相对路径,并手动下载对应文件,放进同一文件夹(如
./img/logo.png) - 推荐:用
wget --page-requisites --convert-links --restrict-file-names=windows URL,它会自动下载依赖并改写路径 - 开发向:用
Save Page WE浏览器扩展,但它对 Shadow DOM、动态 import 的资源支持有限,别指望 100% 完整
真正难的不是保存,是判断哪些资源是“必需”的——有些 JS 只在特定用户行为下加载,这种离线根本不可见,也没法靠工具预判。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











