🔤

文本编码检测器

浏览器端未知编码检测器,支持一键载入示例、转换提示以及 16 种语言本地化文档。

文本输入

什么是字符编码

字符编码是将字符映射到二进制值以进行计算机存储和传输的系统。不同的编码使用不同的映射:ASCII 使用 7 位(128 个字符,仅英语)、ISO-8859-1 (Latin-1) 扩展到 8 位(256 个字符,西欧)、GB2312/GBK 用于简体中文、Big5 用于繁体中文、Shift-JIS 用于日语、UTF-8(1-4 字节,通用,向后兼容 ASCII)、UTF-16(2 或 4 字节)。乱码(如 �)发生在用一种字符集编码的文本用另一种字符集解码时。BOM(字节顺序标记)是文件开头的可选签名,用于识别编码。正确的编码检测防止数据损坏并确保跨系统和语言的正确文本显示。

功能特点

🔍

智能检测

使用统计分析、BOM 检测、字符模式识别自动检测文本编码。支持 UTF-8/16/32、GBK、GB2312、Big5、Shift-JIS、ISO-8859 系列、Windows-1252,带置信度分数
🔄

字符集转换

在任何支持的编码之间转换文本:UTF-8 ↔ GBK ↔ Big5,修复乱码问题,添加或删除 BOM 标记,正确处理代理对和组合字符
🩺

编码诊断

识别编码问题:无效字节序列、同一文件中的混合编码、BOM 不匹配、代理对错误,带修复建议和详细错误报告
📦

批量处理

同时处理多个文件的编码检测,转换整个目录,保留文件结构,生成带统计信息和错误日志的转换报告
🎯

应用场景

🏢

遗留系统迁移

在迁移财务、ERP 或政务系统时,将 GBK/Big5 档案批量转换为 UTF-8。
🌐

全球内容质检

内容与 SEO 团队校验多语言站点、RSS 与邮件是否声明正确字符集以避免乱码。
🧾

数据接入流水线

将合作方日志、CSV、ETL 输入导入数据仓库或 Spark 之前先验证编码。
🛠️

开发调试

审查 Git diff 或数据库导出时,快速定位 BOM 冲突与混合编码。

📋使用指南

1️⃣
上传或粘贴
上传文本文件或粘贴文本内容进行编码分析
2️⃣
检测编码
点击检测以自动识别编码,或在已知时手动指定
3️⃣
查看结果
检查检测到的编码、置信度级别、BOM 存在和预览文本
4️⃣
根据需要转换
选择目标编码,转换文本,下载或复制转换后的结果

📚技术介绍

🔤编码标准

字符编码的演变以支持不同语言:ASCII(1963,7 位,128 字符,英语)。ISO-8859 系列(8 位,256 字符,区域性:-1 拉丁文、-2 中欧、-5 西里尔文、-6 阿拉伯文)。亚洲语言的 DBCS(双字节):GB2312(1980,6763 个简体中文)、GBK(21886 个字符,GB2312 扩展)、Big5(13060 个繁体中文)、Shift-JIS(日语,复杂字节规则)。Unicode 联盟创建通用编码:UTF-8(可变 1-4 字节,ASCII 兼容,Web 标准)、UTF-16(2 或 4 字节,Windows/Java 默认,需要 BOM)、UTF-32(固定 4 字节,浪费但简单)。现代系统更喜欢 UTF-8 用于存储,UTF-16 用于内存处理。

🔍检测算法

编码检测使用多种技术:1) BOM 检测:UTF-8 (EF BB BF)、UTF-16 LE (FF FE)、UTF-16 BE (FE FF)、UTF-32 LE (FF FE 00 00)。2) 统计分析:字符频率分布、字节模式、有效字节序列。chardet (Python)、ICU (C++)、jschardet (JavaScript) 等库使用字符 n-gram 和在样本文本上训练的语言模型。3) 验证:检查字节是否为编码形成有效序列(UTF-8 有特定的延续字节规则,GB2312 有定义的代码范围)。4) 启发式方法:文件扩展名 (.txt)、HTTP 头(charset)、XML 声明(<?xml encoding="">)。置信度分数组合多个信号。短文本或罕见字符会出现误报。

🔄编码转换

编码之间的转换需要:1) 使用源编码将源字节解码为 Unicode 代码点。2) 将代码点编码为目标编码。挑战:不可映射字符(并非所有 Unicode 字符都存在于旧编码中)- 使用替换字符 (�)、HTML 实体或错误处理。规范化:Unicode 对同一字符有多种表示(é 可以是单个代码点 U+00E9 或 e + 组合重音),NFC 规范化为组合,NFD 为分解。BOM 处理:为 UTF-16/32 添加,UTF-8 可选(通常省略)。行尾:CRLF(Windows)vs LF(Unix)需要单独处理。大文件的流式转换处理带有状态解码器的块,在块之间保持上下文。

🐛乱码和修复

乱码(文字化け,乱码文本)源于编码不匹配:UTF-8 文本解释为 Latin-1 显示 à 而不是 é,中文显示 � 或 中文。常见原因:服务器发送 UTF-8 时没有 charset 头、编辑器用错误编码保存、数据库在 Latin-1 列中存储 UTF-8。修复:1) 用正确编码重新解码:如果文本是 UTF-8 但解码为 Latin-1,重新编码为 Latin-1 字节然后解码为 UTF-8。2) 使用编码检测库。3) 检查 HTTP 头、HTML meta 标签、XML 声明。预防:始终到处使用 UTF-8,明确声明编码,在边界验证数据。Ftfy (Python) 库使用统计模式自动修复乱码。

Frequently Asked Questions

编码检测的准确度如何?

检测器结合 BOM 检测、统计分析和字节模式验证来估计最可能的字符集。每次运行还会显示置信度分数,让您知道何时需要额外的人工审查。
💬

检测后可以转换文本吗?

可以。一旦识别出编码,您可以选择任何目标字符集,在浏览器中完全转换文本,并下载或复制转换后的输出,无需上传文件。
🔍

添加或删除 BOM 选项有什么作用?

BOM(字节顺序标记)是 UTF 文件开头的可选签名。添加 BOM 可以帮助某些 Windows 工具检测编码,而删除它可以使文件在 UNIX 环境中保持精简。根据文本的使用场景切换此选项。
💡

为什么转换后仍然看到乱码?

如果文本之前使用错误的字符集解码,损坏可能已经保存。请尝试重新加载原始文件,确保选择了正确的源编码,然后再次转换。单个文件中的混合编码也会产生乱码。
📚

我的文本会被上传或存储吗?

不会。检测和转换完全在您的浏览器中进行。文件永远不会离开您的设备,因此机密文档保持私密。

💡最佳实践

💡

始终使用 UTF-8

默认情况下在所有地方使用 UTF-8 编码 - 数据库、文件、HTTP 头、HTML meta 标签。UTF-8 是通用的,支持所有语言,向后兼容 ASCII,是 Web 标准。在 HTML (<meta charset="UTF-8">) 和 HTTP 头 (Content-Type: text/html; charset=utf-8) 中明确声明编码。这可以防止乱码并确保跨系统一致的文本显示。
🔍

转换前先检测

在尝试转换之前始终检测编码以避免数据损坏。使用检测库的置信度分数验证准确性。对于模糊情况(低置信度),手动检查样本文本或尝试多种编码进行视觉验证。永远不要仅基于文件扩展名或来源假设编码 - 始终验证。
📝

正确处理 BOM

检查文件开头的 BOM(字节顺序标记)以进行确定性编码识别。UTF-8 BOM (EF BB BF) 是可选的但有助于检测。UTF-16/32 需要 BOM 来确定字节顺序(LE/BE)。一些系统期望 BOM,其他系统拒绝它 - 了解您的目标系统。在转换期间根据需要删除或添加 BOM。
🩺

测试乱码修复

修复乱码文本时,通过模式分析识别原始编码和误解释的编码。常见乱码:UTF-8 作为 Latin-1(é 而不是 é)、中文显示为 ? 或随机字符。重新编码为中间编码,然后使用正确的编码解码。在处理整个文件之前在样本数据上测试修复。如果数据已在数据库中损坏,某些乱码是不可逆的。
⚠️

在边界验证

在系统边界验证编码 - 文件读取、HTTP 请求、数据库查询、API 调用。在所有数据传输中使用字符集声明。清理和验证输入文本以尽早检测无效字节序列。记录编码问题以进行调试。为编码检测失败实现回退策略。永远不要在单个文件或数据库列中混合编码。

🔗相关文档

🔤RFC 3629 - UTF-8 规范-UTF-8 编码格式标准
🌏GB18030 中文编码-中国国家标准字符编码
🔧ICU 字符编码检测-Unicode 国际组件检测库
📚字符编码最佳实践-W3C 处理字符编码的指南

User Comments

0 / 2000
Loading...