13

Linux curl を使用して、URL から xml ファイルをダウンロードしようとしています。

XMLがUTF-8でエンコードされていることを確認してください。

curl -o が UTF-8 として保存されない疑いがあります。

curl で強制的に UTF-8 に保存する方法はありますか?


提案をありがとう、私が見つけたもの:

xml フィードは動的であるため、常に utf-8 文字が含まれているわけではありません。xml エンコーディングとヘッダー コンテンツ タイプで utf-8 として設定されている場合でも、コンテンツ全体に utf-8 文字がまったくない場合があります: charset=utf-8。少なくとも utf-8 文字が含まれている場合は、utf-8 として保存されます。

これが発生すると、curl は utf-8 としてダウンロードされません。これは、utf-8 文字がないため理にかなっています。なぜ utf-8 として保存する必要があるのですか。

これは非常にトリッキーです。一部のバリデーターは utf-8 に対して有効でなければならないため、デフォルトですべての xml shld が utf8 エンコーディングであるため、強制的に utf8 にするソリューションが必要です。

iconv f iso8859-1 utf-8 を使用して提案された方法を試してみましたが、このケースでは機能しません。

まだより良い解決策が必要です。

4

2 に答える 2

15

curl は、ダウンロードしたファイルの変換を行いません。HTTP サーバーが別のエンコーディング (ISO8859-1 など) で XML を提供する場合、curl はそれをディスクにも保存します。

問題を回避するには、次のように「iconv」を使用できます。

curl URL | iconv -f iso8859-1 -t utf-8 > output.xml

この助けを願っています。

于 2012-04-16T10:50:25.633 に答える
6

Accept-Charset ヘッダーを追加してみましたか? 間違ったエンコーディングでダウンロードしていたファイルをダウンロードする際に、同様の問題がありました。Accept-Charset ヘッダーを設定すると、次のように機能します。

curl -H "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" URL | iconv -f iso8859-1 -t utf-8 > output.xml
于 2012-05-24T01:34:36.570 に答える