ホームページ > ウェブフロントエンド > フロントエンドQ&A > Nodejs Cherioのコードが文字化けする

Nodejs Cherioのコードが文字化けする

王林
リリース: 2023-05-23 12:32:08
オリジナル
719 人が閲覧しました

データを送信する際、文字化けが発生しやすいです。データクローリングにnodejsを使用するプロセスでは、ドキュメントの解析にcheerioがよく使用されます。ただし、cherio を使用して解析されたコンテンツが文字化けする場合があります。この問題は、cheerio を使用している多くの開発者を悩ませる可能性があります。この記事では、cheerioで文字化けが発生する原因と解決策を紹介し、開発者が問題を迅速に解決できるようにします。

  1. cheerio 文字化けの原因

ドキュメントを解析する過程で、ドキュメントのエンコードがcherioで解析されたエンコードと一致しない場合、文字化けが発生します。 。具体的な理由は次のとおりです。

(1) ソース ファイルのエンコードの問題。ソース ファイルが GBK、GBK2312 などの非 UTF-8 エンコード方式を使用しており、cheerio が解析時に UTF-8 エンコードを使用する場合、解析された中国語が文字化けします。

(2) ネットワーク送信の問題。解析されたドキュメントがネットワーク経由で送信される場合、ネットワーク送信のエンコード方式と Cheerio 解析のエンコード方式が一致せず、解析されたコンテンツが文字化けする可能性があります。

  1. Cheerioのコード化け解決方法

cheerioのコード化け問題の解決方法は実はとても簡単です。具体的な方法は以下のとおりです。

(1) 解析エンコード方式を指定します。ドキュメントで非 UTF-8 エンコード方式が使用されている場合、cheerio が解析するときに対応するエンコード方式 (GBK、GBK2312 など) を指定できます。コード例は以下のとおりです。

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 标签的内容
});
ログイン後にコピー

(2) ネットワーク伝送のエンコード方式を確認します。ドキュメントを送信する際のエンコードの問題は可能な限り回避する必要があります。ブラウザの開発者ツールを使用して、ネットワーク送信に使用されているエンコーディングを確認し、そのエンコーディングを、cheerio が解析するときに使用されるエンコーディングと一致させることができます。

つまり、cheerioの文字化け問題を解決する方法は、ドキュメントのエンコード方法とネットワーク送信のエンコード方法に注意を払い、cheherioが解析する際のエンコード方法を一致させることです。これらの問題に注意を払うことによってのみ、開発者は Cherio による文字化け解析を回避することができます。

以上がNodejs Cherioのコードが文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート