HTMLページを取得するためにlibcurlを使用しています。
ヘブライ文字に問題があります。
たとえば、これסלקום
は意味不明になります。
意味不明ではなく、ヘブライ文字を取得するにはどうすればよいですか?
HTML デコーダーが必要ですか?
libcurl はそのような操作をサポートしていますか?
libiconv はそのような操作をサポートしていますか?
助けていただければ幸いです。
ありがとう
HTMLページを取得するためにlibcurlを使用しています。
ヘブライ文字に問題があります。
たとえば、これסלקום
は意味不明になります。
意味不明ではなく、ヘブライ文字を取得するにはどうすればよいですか?
HTML デコーダーが必要ですか?
libcurl はそのような操作をサポートしていますか?
libiconv はそのような操作をサポートしていますか?
助けていただければ幸いです。
ありがとう
編集:わかりました。あなたが見ているのは、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-Type
HTTP ヘッダーを要求してから、iconv を使用してシステム エンコーディングに変換する必要があります。あなたの場合はコードページ 1255 になりますが、それはユーザーのシステムに依存するため、適切な関数を調べてそれを検出する必要があります。
(詳細については、このサイトのUnicode と Character Setsおよびcharacter-encodingタグを参照してください。)