0

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

HTML ページには、次のような文字参照が含まれています。סלקום

libxml2 を使用してこれを読むと、次のようになります。

ISO-8859-1エンコーディングですか?

もしそうなら、それをUTF-8に変換して正しい単語を取得するにはどうすればよいですか?

ありがとう

編集:私は解決策を得ました.MSaltersは正しかった.libxml2はUTF-8を使用しています.

これをeclipse.iniに追加しました

-Dfile.encoding=utf-8

最後に、Eclipse コンソールでヘブライ文字を取得しました。ありがとう

4

3 に答える 3

3

i18n の libxml2 ページを見たことがありますか? libxml2 がこれらの問題をどのように解決するかを説明します。

libxml2 から取得します。סただし、次のようなものが得られると言いました׳₪׳¨׳˜׳ ׳¨。なぜそれを手に入れたと思いますか?を取得しXMLchar*ます。そのポインターを上記の文字列にどのように変換しましたか? おそらくデバッガを使用しましたか?そのデバッガーは をレンダリングする方法を知っていますXMLchar*か? 私の賭けはXMLchar*正しいですが、Unicode をレンダリングできないデバッガーを使用しましたXMLchar*

最後の質問に答えるために、 aXMLchar*は既に UTF-8 であり、さらに変換する必要はありません。

于 2010-10-20T09:59:31.150 に答える
0

この答えは、エンコードされたテキストがUTF-16として返されるという仮定で与えられましたが、実際にはそうではありません。


エンコーディングはUTF-16またはUCS2だと思います。これをiconvの入力として指定します。エンディアンの問題もあるかもしれません。こちらをご覧ください


cスタイルの方法は次のようになります(明確さのチェックなし):

iconv_t ic = iconv_open("UCS-2", "UTF-8");
iconv(ic, myUCS2_Text, inputSize, myUTF8-Text, outputSize);
iconv_close(ic);
于 2010-10-20T08:33:30.453 に答える
0

いいえ。これらのエンティティは、文字の Unicode シーケンス番号の 10 進数値に対応しています。たとえば、このページを参照してください。

したがって、Unicode 値をinteger として保存し、アルゴリズムを使用してこれらの整数を UTF-8 マルチバイト文字に変換できます。これについては、UTF-8 仕様を参照してください。

于 2010-10-20T07:51:35.540 に答える