0

HTMLページを取得するためにlibcurlを使用しています。

ヘブライ文字に問題があります。

たとえば、これסלקום は意味不明になります。

意味不明ではなく、ヘブライ文字を取得するにはどうすればよいですか?

HTML デコーダーが必要ですか?

libcurl はそのような操作をサポートしていますか?

libiconv はそのような操作をサポートしていますか?

助けていただければ幸いです。

ありがとう

4

1 に答える 1

1

編集:わかりました。あなたが見ているのは、UTF-8 データが Windows-1252 としてデコードされていることです (したがって、数字の参照は赤ニシンでした)。Python でのデモは次のとおりです。

>>> u = ''.join(map(unichr, [1505, 1500, 1511, 1493, 1501]))
>>> s = u.encode('utf-8')
>>> print s.decode('cp1255', 'replace')
׳¡׳�׳§׳•׳�

この問題の解決策は、出力が表示される環境によって異なります。受信したバイトを単に出力し、それらが文字として解釈されることを期待すると、このような問題が発生します。

通常、HTML ドキュメントにはヘッダー タグが含まれて<meta charset=utf-8>おり、ブラウザーにエンコーディングを示す必要があります。Web サーバーによって提供されるドキュメントには、 のような HTTP ヘッダーが含まれていますContent-Type: text/html; charset=utf-8

ドキュメントのエンコーディングを知るには、libcurl にContent-TypeHTTP ヘッダーを要求してから、iconv を使用してシステム エンコーディングに変換する必要があります。あなたの場合はコードページ 1255 になりますが、それはユーザーのシステムに依存するため、適切な関数を調べてそれを検出する必要があります。

(詳細については、このサイトのUnicode と Character Setsおよびcharacter-encodingタグを参照してください。)

于 2010-10-19T18:45:01.717 に答える