⭐ 觉得好用?收藏备用,下次直接打开 ☕ 支持作者
换编码 — 文本文件在 UTF-8 / GBK / GB18030 / Big5 / Shift_JIS / UTF-16 之间互转,自动识别原编码,可批量。 修乱码 — 已经变成 我们 / 鎴戜滑 的文字,粘进来直接还原。全程本地处理,不上传
📄 拖入文本文件,或 点击选择文件
txt / csv / srt / lrc / json / log / md / ini… 支持多选批量

文件编码转换 做两件事:把文本文件在 UTF-8、GBK、GB18030、Big5、Shift_JIS、UTF-16 之间互转(自动识别原编码、支持批量、可加 BOM 和统一换行符),以及把已经错码的文字反推回原文。全程浏览器本地处理,文件不上传任何服务器。

先分清:是”文件要换编码”还是”文字已经错了”

这是两个完全不同的问题,解法也不同:

你的处境用哪个模式结果
源文件还在,只是打开方式不对文件编码转换无损,字符一个不少
只剩下一段错码的文字,源文件没了乱码文本修复多数能完整还原,部分情况有损

只要源文件还在,永远优先走文件转换——那是无损的。乱码修复是拿不到源文件时的补救。

三个常用预设

  • 📊 Excel 打开 CSV 不乱码 = UTF-8 + BOM + CRLF。Excel 只认 BOM 来判断 UTF-8,这是中文 CSV 最高频的坑。
  • 💾 老软件 / 老设备 = GBK + CRLF。老工控软件、老打印机、部分国产数据库导入只吃 GBK。
  • 🐧 Linux / Git 标准 = UTF-8 无 BOM + LF。给程序读、进版本库的文本用这个,BOM 会被很多解析器当成正文字符。

BOM 到底要不要加

BOM 是文件开头的几个字节,用来声明”我是什么编码”。加不加的判断很简单:给人用 Excel / 记事本打开的,加;给程序读、进 Git 的,不加。 UTF-16 是例外——没有 BOM 就分不出大端小端,所以选 UTF-16 时默认帮你勾上。

编码装不下字符怎么办

UTF-8 能表示全部 Unicode 字符,GBK、Big5 这些传统编码不能。把 UTF-8 转成 GBK 时,emoji、生僻字、部分外文字符会退化成 ?这是有损的。转换前预览区会把装不下的字符逐个列出来,看到警告就先留一份 UTF-8 原件。需要国标编码又要全字符覆盖,选 GB18030——它是 GBK 的超集,覆盖全部 Unicode。

乱码是怎么被还原的

一段乱码的成因是”A 编码的字节被 B 解码器读了”。还原就是把这个过程倒过来:先按 B 把乱码编回字节,再按 A 重新解一遍。工具会穷举常见的错配组合(最多两层嵌套错码),只保留能严格对上的路径,再按常用字占比排序。对不上就直说对不上——没有任何工具能凭空补回已经丢掉的字节。

📍使用场景

  • Excel 打开 CSV 中文全乱码从系统导出的 CSV 双击用 Excel 打开,中文列变成问号方块——转成"UTF-8 带 BOM"再打开就正常,点一下预设按钮即可。
  • 下载的小说 / 字幕 txt 打不开国内站点搬运的 txt 多是 GBK,手机阅读器和 Mac 只认 UTF-8。拖进来自动识别原编码,一键转出干净 UTF-8。
  • 文字已经变成 我们 / 鎴戜滑手里只剩错码的文字、拿不到源文件时,粘到"乱码文本修复"里,穷举常见错配组合把原文推回来。
  • 给老系统 / 老设备喂文件一些老工控软件、老打印机、老数据库导入只认 GBK 或 Big5,把 UTF-8 文本反向转回去,还能顺手把换行符换成 CRLF。

常见问题

Excel 打开 CSV 中文乱码,到底该怎么存?

存成 UTF-8 带 BOM。Excel 读 CSV 时不看内容猜编码,只认文件开头那三个字节 EF BB BF(BOM);没有 BOM 它就按系统本地编码(简体中文 Windows 是 GBK)去解,UTF-8 的中文自然全乱。本工具的"Excel 打开 CSV 不乱码"预设就是 UTF-8 + BOM + CRLF 三件套。反过来,给程序读的配置文件、给 Git 管的源码不要加 BOM,很多解析器会把 BOM 当成正文第一个字符。

浏览器不是不能输出 GBK 吗,这个工具怎么做到的?

原生 TextEncoder 确实只能输出 UTF-8,这是 Encoding Standard 的硬性规定。所以这里换了个思路:用 TextDecoder 把目标编码的全部合法字节序列穷举解一遍,反过来建出"字符 → 字节"的码表,首次使用时构建一次(实测 5–30 毫秒),之后编码就是查表。全程零依赖、零上传,GB18030 的 4 字节区和辅助平面也一并覆盖。

原编码是怎么猜出来的?猜错了怎么办?

按三级判断:先看 BOM(EF BB BF → UTF-8、FF FE → UTF-16LE、FE FF → UTF-16BE),最可信;再做 UTF-8 严格校验,整份文件没有一处非法字节序列就判定 UTF-8;都不中才猜,按 GB18030 / Big5 / Shift_JIS / EUC-KR / Windows-1252 各解一遍打分选最像的。猜的结果会标成"按内容推断",猜错了在文件行右侧的下拉里手动改,预览立刻重算。文件越短越容易猜错——GBK 和 Big5 在短句上有时字节完全合法但解出来是不同的字。

为什么转成 GBK 后有些字变成了 ?

因为 GBK 里根本没有这个字。GBK 收了两万多个汉字,但装不下 emoji、生僻字、部分少数民族文字和西里尔扩展。转换前预览区上方会明确列出装不下的字符,导出时它们会变成 ?——这是有损的,转之前请留一份 UTF-8 原件。真的需要保留全部字符又要国标编码,改选 GB18030:它是 GBK 的超集,能覆盖全部 Unicode 字符。

乱码修复是怎么判断"还原对了"的?

两道硬过滤加一次排序。过滤一:把乱码按"当初读错用的编码"编回字节,编不回去(有字符不在那个编码里)说明这条路径不可能是成因,直接否掉。过滤二:换成推断的真实编码重新解,要求严格合法,出现一个非法字节序列就否掉。排序:传统编码的码位天然按常用度分区(GB2312 一级字、Big5 常用字、Shift_JIS 第一水準),据此算"常用字占比",把那种通篇生僻字、看着像中文其实是乱码的假还原压到后面。对不上就明说对不上,不硬凑一个结果给你。

带 � 或者「锟斤拷」的乱码为什么救不回来?

因为原始字节在保存那一刻就已经没了。解码器遇到不认识的字节序列会吐一个替换符 U+FFFD(显示成 �),这一步是不可逆的:原来那几个字节被丢弃,只留下一个"这里出过错"的记号;「锟斤拷」则是这个替换符又被编码了一轮的产物。这种情况下任何工具都还原不回来,唯一的解法是回到源文件,用"文件编码转换"重新转一次。如果只是零星几处丢失,工具会给一个尽力而为的结果,丢失位用 ? 占位并明确标注。

文件会上传吗?多大的文件能处理?

不上传。读文件用 File API,解码用浏览器原生 TextDecoder,编码用本地生成的反查码表,批量导出用 JSZip 在内存里打包,全过程没有一个网络请求,断网也能用。文件大小取决于可用内存,实测几十 MB 的文本没问题;超过 100MB 建议先切分。