html-encoding-sniffer

中文文档
7.0.0发布于 2026/09/21MITCommonJS构建来源已验证近 30 天下载 4.5亿

嗅取 HTML 或 XML 字节流的编码

中文使用文档

确定 HTML 或 XML 字节流的编码

这个包决定了HTML或XML字节流的字符编码. 它遵循 HTML 标准 编码嗅算法 对于 HTML,和WebKit 的编码嗅觉行为为 XML .

const htmlEncodingSniffer = require("html-encoding-sniffer");
const fs = require("node:fs");

const bytes = fs.readFileSync("./page.html");
const sniffedEncoding = htmlEncodingSniffer(bytes);

用于 XML, 通过 { xml: true }数字 :

const bytes = fs.readFileSync("./document.xml");
const sniffedEncoding = htmlEncodingSniffer(bytes, { xml: true });

传递的字节为 Uint8Array; 节点.js Buffer 子类 Uint8Array 如上所示,还将开展工作.

返回的值将是一个峡谷 编码名称 (不是标签). 你也许可以把这和 @exodus/bytes 解码结果的软件包 :

const { TextDecoder } = require("@exodus/bytes/encoding.js");
const decodedString = (new TextDecoder(sniffedEncoding)).decode(bytes);

选项

您可以将以下选项传递至 htmlEncodingSniffer数字 :

const sniffedEncoding = htmlEncodingSniffer(bytes, {
  xml,
  transportLayerEncodingLabel,
  defaultEncoding,
  maxPrescanBytes
});

这个 xml 选项是一个布尔,默认为 false中选择 XML 嗅觉 true hTML 嗅觉时 false。XML 嗅觉忽略 HTML <meta> 声明和给调用者的 XML 解析器留下了良好的结构验证.

这个 transportLayerEncodingLabel 是一个从“ 运输层” 获得的编码标签( 可能是 HTTP) Content-Type 除了BOM,它能超越一切.

这个 defaultEncoding 如果运输层没有提供有效的编码,则是所使用的最终倒置编码,并且没有从字节中嗅出编码。 对于 HTML, 它默认为 "windows-1252",按照算法中“所有其他地方”的默认值建议表(包括 en (原始内容存档于2017-09-29). lane. XML 默认为 "UTF-8"。 。 。 .

这个 maxPrescanBytes 选项设置要扫描 HTML 的字节数 <meta> 编码声明,默认为 1024设定更大的值来确认输入中稍后的宣布, Infinity 扫描整个输入,或 0 以跳过元扫描。 必须是非负整数或 Infinity。这一限制不适用于XML声明或UTF-16字节签名。 何时供应 xml 实值 true 丢出一个 TypeError。 。 。 .

贷项

这一一揽子方案最初是基于以下各方面的出色工作: @nicolashenry (英语), (中文(简体) ), 缩写从那时起,它就被拉进了这个单独的包.

版本与发布记录

html-encoding-sniffer 共发布 10 个版本,首次发布于 2016/10/16;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
7.0.0latest2026/09/211 个月前
6.0.02025/12/2610 个月前
5.0.02025/12/2310 个月前
4.0.02023/11/122 年前
3.0.02021/09/195 年前
2.0.12020/02/246 年前

关于 html-encoding-sniffer 的常见问题

html-encoding-sniffer 是什么?

嗅取 HTML 或 XML 字节流的编码

如何安装 html-encoding-sniffer?

在项目目录运行 npm install html-encoding-sniffer,或使用 pnpm add / yarn add / bun add。

html-encoding-sniffer 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/html-encoding-sniffer 是否存在。

html-encoding-sniffer 支持 ESM 还是 CommonJS?

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

html-encoding-sniffer 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.13.0 || >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

html-encoding-sniffer 可以商用吗?

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

html-encoding-sniffer 的下载量有多少?

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

html-encoding-sniffer 还在维护吗?

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