所有分类
  • 所有分类
  • 后端开发
Cheerio乱码问题揭秘:源文件编码到底是谁在作祟?

Cheerio乱码问题揭秘:源文件编码到底是谁在作祟?

传输数据的过程中,很容易遇到乱码的问题。来进行文档解析。解析出来的内容会出现乱码。乱码的原因解析的编码不一致就会出现乱码的问题。编码方式时,就会导致解析出来的中文出现乱码。解析的编码方式不一致,造成解析出来的内容出现乱码。乱码解决方法乱码问

了解Cheerio乱码问题的根源

当你遇到这样的情况,比如你正要用Node.js抓取网页数据,但是Calrity这个工具怎么解析都不对劲,或者把所有东西都搅和到一起,那多半是因为你在处理的时候,查看文件格式不对。可能是你在使用的编码和Cheerio预设的UTF-8有点不合拍;也可能是网络传输时发生了编码转换.所以,解决这类问题,第一步就是弄清楚你到底用什么编码,然后看看Cheerio能不能支持就行!

源文件编码问题

慢点儿,我有点儿迷糊。能和我说说那啥源文件编码么?比如说,你的源文件可能是用的GBK、GBK2312这些不太常见的编码,但Cheerio在解析时是默认用UTF-8。那么如果遇到汉字,问题来了,在解析过程中就会有乱七八糟的结果或者乱码。为啥?其实,就是因为编码不一样,导致解析出的内容乱套了。

解决编码问题就得跟解析器说清楚你想要什么编码方式,比如如果是用Cheerio解析的话,就要保证和源文件编码一致!这样才能避免因为编码不统一而出现乱码

网络传输问题

再者,网上那些东西可能会让Cheerio懵圈。我们在上网找信息时,信息代码是会随处变化的。万一网络传来的和Cheerio理解的对不上号,那结果绝对就是一团糟了。

面对网络杂乱无章带来的编码麻烦,咱们做编程的得尽力保证数据传输稳妥。其实不难,看看浏览器开发者工具传递过来的数据是怎样编码的,再和我们Cheerio解析器设置的标准对比对照就能轻松解决。有了这个方法,编码不统一也不用怕出岔子!

应对Cheerio乱码问题的方法

看到 Cheerio 代码变乱码了咋办?不慌,跟着我来试试下面的两个方法!其实关键就看以下两步哦:

1.指定解析编码方式

Cheerio乱码问题揭秘:源文件编码到底是谁在作祟?

别担心,碰到源文件不是utf-8编码的情况,用Cheerio搞定就行。只需要在浏览器里把编码方式调成跟源文件一样的,比如改为GBK或者GBK2312编码,就能正常显示了。这样,你就能轻松读到并看到代码!

示例代码:

javascript
只需装一个叫'cheerio'的插件,就搞定了!
就用这个叫做iconv的小工具,就是把文本搞定。
要用这个么?
直接照着填,把'https://example.com'和null码输入进去,然后搞定提交。别磨蹭,赶紧试下成效如何!
const cheerio = require('cheerio');
const iconv = require('iconv-lite');
const request = require('request');
const url = 'https://www.example.com'; // 需要解析的页面 URL
const options = {
    url: url,
    encoding: null        // 设置编码为 null
};
request(options, function (error, response, buffer) {
    const html = iconv.decode(buffer, 'gbk');     // 将 buffer 转成 GBK 编码的字符串
    const $ = cheerio.load(html.toString());      // 使用 cheerio 加载 HTML 字符串
    console.log($('title').text());               // 输出 title 标签的内容
});

我们用iconv把网页内容转为 gbk,就是gbk格式。
直接在HTML里放内容进去,就不用操心那些黏糊糊的字符转化了。
//进行后续操作
});

2.检查网络传输编码方式

嘿朋友们,记住,做编程时要注意网站传来的信息编码!例如,可以先看看网络给出什么提示,或者找个靠谱的工具看看都用到了哪些编码。然后,将这个结果和在使用Cheerio时的情况对比下,就能解决编码乱七八糟带来的麻烦~

简单来说,想让Cheerio乖乖照我们说的做,就得搞清楚它喜欢哪种文件格式和传输方式。只要把这些都配好了,就能安心用它去抓取数据、解析文档,再也不用为这些烦心事儿犯愁!

原文链接:https://www.icz.com/technicalinformation/web/2024/04/14868.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?