6

nodejs を使用してWeb ページからデータをスクレイピングしようとしていますが、文字エンコーディングに問題があります。Web ページには、エンコーディングは次のように記載されています <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> 。Chrome で閲覧すると、エンコーディングが windows-1250 に設定され、すべて問題なく表示されます。

ノードにはストリームの Windows-1250 エンコーディング/デコーディングがないため (そして utf8 は機能しませんでした)、異なるエンコーディング間で簡単に変換できる iconv-lite パッケージを見つけました。しかし、応答をファイルに保存 (またはコンソールに出力) した後も、間違った文字が表示されます。また、さまざまなエンコーディング、ネイティブ ノード バッファ エンコーディングを試し、ヘッダーを chrome ( ) に表示されるものと同じに設定しましたAccept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3が、何も正しく動作していないようです。

ここでコード全体を見ることができますhttps://gist.github.com/4110999

エンコーディングの仕組みに関する基本的なことが欠けていると思いますので、正しい文字でデータを取得する方法についての助けをいただければ幸いです。

編集:
パッケージの問題である場合に備えて、node-iconvパッケージも試しました。51 行目を次のように変更しました。

var decoder = new Iconv_native('WINDOWS-1250', 'UTF-8');  
var decoded = decoder.convert(body).toString();

それでも同じ結果が得られます。

4

2 に答える 2

2

私はiconv-liteパッケージに精通していませんが、そのコードを見ると、win1250代わりに使用する必要があるようですwindows1250(こちらを参照)

エンコーディングはハッシュとして検索されます。

また、readme では「windows1251」の代わりに次のコードを使用しています。

str = iconv.decode(buf, 'win1251');
于 2012-11-19T15:19:26.743 に答える