データを送信する際、文字化けが発生しやすいです。データクローリングにnodejsを使用するプロセスでは、ドキュメントの解析にcheerioがよく使用されます。ただし、cherio を使用して解析されたコンテンツが文字化けする場合があります。この問題は、cheerio を使用している多くの開発者を悩ませる可能性があります。この記事では、cheerioで文字化けが発生する原因と解決策を紹介し、開発者が問題を迅速に解決できるようにします。
ドキュメントを解析する過程で、ドキュメントのエンコードがcherioで解析されたエンコードと一致しない場合、文字化けが発生します。 。具体的な理由は次のとおりです。
(1) ソース ファイルのエンコードの問題。ソース ファイルが GBK、GBK2312 などの非 UTF-8 エンコード方式を使用しており、cheerio が解析時に UTF-8 エンコードを使用する場合、解析された中国語が文字化けします。
(2) ネットワーク送信の問題。解析されたドキュメントがネットワーク経由で送信される場合、ネットワーク送信のエンコード方式と 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 サイトの他の関連記事を参照してください。