chardet

中文文档
2.2.0发布于 2026/06/20MITTypeScriptCommonJS零依赖构建来源已验证近 30 天下载 2.6亿

字符编码检测器

中文使用文档
文档目录8 节
  1. 安装
  2. 使用量
  3. 使用大型数据集
  4. 使用字符串工作
  5. 支持编码 :
  6. 类型脚本 ?
  7. 参考资料
  8. 开始

字符

字符 是一个用纯 JavaScript (TypeScript) 写的字符检测模块. 模块使用发生分析来确定最可能的编码.

  • 包装大小 22个KB
  • 所有环境中的工作:节点/浏览器/原生
  • 所有平台的工作: Linux / Mac / Windows
  • 无依赖关系
  • 没有本地代码/ 绑定
  • 100% 写入类型脚本
  • 广泛的代码覆盖

安装

npm i chardet

使用量

以最高的自信返回编码:

import chardet from 'chardet';

const encoding = chardet.detect(Buffer.from('hello there!'));
// or
const encoding = await chardet.detectFile('/path/to/file');
// or
const encoding = chardet.detectFileSync('/path/to/file');

返回可能使用的编码的完整列表 analyse 方法.

import chardet from 'chardet';
chardet.analyse(Buffer.from('hello there!'));

返回值是一组按下行顺序按信任值排序的对象

[
  { confidence: 90, name: 'UTF-8' },
  { confidence: 20, name: 'windows-1252', lang: 'fr' },
];

在浏览器中,您可以使用 Uint8 阵列 代替 Buffer数字 :

import chardet from 'chardet';
chardet.analyse(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f]));

使用大型数据集

有时,当数据集庞大,而你想要优化性能时(与准确度较低的交易), 您只能对缓冲器的第一个 N 字节进行抽样:

const encoding = await chardet.detectFile('/path/to/file', { sampleSize: 32 });

您也可以在缓冲器中指定从何处开始读取 :

const encoding = await chardet.detectFile('/path/to/file', {
  sampleSize: 32,
  offset: 128,
});

使用字符串工作

在Node.js和浏览器中,内存中的所有字符串都以UTF-16编码表示. 这是JavaScript语言规格的一个基本方面. 因此,您不能直接使用纯字符串作为输入 chardet.analyse() 或者说 chardet.detect()。相反,您需要以缓冲或Uint8Array形式提供的原始字符串数据.

换句话说,如果通过网络接收到一分数据并想检测其编码,则使用原始数据有效载荷,而不是其字符串表示. 在将数据转换为字符串时,它将会在UTF-16编码中.

说明 文本编码器:默认情况下,它返回一个UTF-8编码缓冲器,这意味着缓冲器不会在字符串的原始编码中.

支持编码 :

  • UTF-8 导弹
  • UTF-16 类 LE
  • UTF-16 BE 战时
  • UTF-32 LE 数据
  • UTF-32 BE (英语)
  • ISO-2022-JP 标准
  • ISO-2022-KR 标准
  • ISO-2022-CN 标准
  • 移动 JIS
  • 大块5
  • EUC-JP
  • 欧盟-韩国
  • GB18030 (英语)
  • ISO-8859-1 标准
  • ISO-8859-2 标准
  • ISO-8859-5 国际标准化组织
  • ISO-8859-6 (英语)
  • ISO-8859-7 国际标准化组织
  • ISO-8859-8 标准
  • ISO-8859-9 (国际标准化组织)
  • 窗口-1250
  • 窗口-1251
  • 窗口-1252
  • 窗口-1253
  • 窗口-1254
  • 窗口-1255
  • 窗口-1256
  • 窗口-1257
  • 窗口-1258
  • 窗口-874(TIS-620 / ISO-8859-11)
  • KOI8-R (韩语)

目前只支持这些编码.

类型脚本 ?

对 包括类型定义.

参考资料

开始

  • KOI8-U 乌克兰语
  • DOS 西里尔语的 IBM866
  • macintosh和x-mac-cyrilic语
  • CP949/UHC 韩国识别器内部的支持
  • ISO-8859-3, ISO-8859-4
  • ISO-8859-10, ISO-8859-13 (英语)
  • ISO-8859-14、ISO-8859-15、ISO-8859-16
  • DOS CP850,CP852,CP855 (英语)

版本与发布记录

chardet 共发布 30 个版本,首次发布于 2013/04/30;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.2.0latest2026/06/204 个月前
2.1.12025/10/301 年前
2.1.02025/02/251.7 年前
2.0.02023/09/283 年前
1.6.12023/09/283 年前
1.6.02023/06/173 年前

关于 chardet 的常见问题

chardet 是什么?

字符编码检测器

如何安装 chardet?

在项目目录运行 npm install chardet,或使用 pnpm add / yarn add / bun add。

chardet 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

chardet 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

chardet 可以商用吗?

chardet 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

chardet 的下载量有多少?

根据 npm 官方下载统计,chardet 在 2026/10/06 – 2026/11/04 这 30 天内被下载 259,493,869 次,日均约 8,649,796 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

chardet 还在维护吗?

最新版本 2.2.0 发布于 2026/06/20(4 个月前);至今共发布 30 个版本,其中过去 12 个月发布了 1 个;首次发布于 2013/04/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。