Nodejs cheerio高手指点一下汉字的问题
Nodejs cheerio高手指点一下汉字的问题
汉字解析后会编程 “实体” 怎么不让他转成实体
6 回复
汉字解析后会编程 “实体” 怎么不让他转成实体
怎么取值的?是.html()? 我之前遇到过,使用.text()就ok
https://github.com/cheeriojs/cheerio#loading decodeEntities: false
[@bitinn](/user/bitinn) 明天去试试
在使用 Cheerio 解析 HTML 时,有时会遇到中文字符被编码为 HTML 实体(如 &#xXXXX;
)的情况。为了避免这种情况,可以在解析后的文本中手动将这些 HTML 实体转换回原始的中文字符。
以下是一个简单的示例代码,展示如何使用 Cheerio 解析 HTML 并处理汉字实体:
const cheerio = require('cheerio');
const { decodeHTMLEntities } = require('entities');
// 示例 HTML 字符串
const html = `
<div>
这是一段包含汉字的文本,会被解析为实体。
</div>
`;
// 加载 Cheerio
const $ = cheerio.load(html);
// 选择你需要解析的元素
$('div').each((index, element) => {
const text = $(element).text(); // 获取原始文本
const decodedText = decodeHTMLEntities(text); // 解码 HTML 实体
console.log(decodedText);
});
// 输出结果应为原始的中文字符
在这个示例中,我们首先引入了 Cheerio 和 decodeHTMLEntities
方法。然后加载了一个包含汉字的 HTML 字符串,并使用 Cheerio 选择并提取文本。为了确保提取出来的文本不会是 HTML 实体,我们使用了 decodeHTMLEntities
方法来解码这些实体。
关于 decodeHTMLEntities
decodeHTMLEntities
是一个第三方库,可以用来将 HTML 实体转换回原始的 Unicode 字符。你可以通过 npm install entities
安装这个库。
这样,即使原始 HTML 中包含了汉字的 HTML 实体形式,经过上述处理后也会被还原为原始的汉字。