2012-04-16 8 views
5

URLからxmlファイルをダウンロードするためにLinux curlを使用しようとしています。linux curl save as utf-8

XMLはUTF-8でエンコードされていることをかなり確信して、

疑ってカール-o doesntがUTF-8として保存します。

強制的に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がutf8エンコーディングであるためutf8に強制する解決策が必要です。

iconv f iso8859-1 utf-8 iso8859-1にないと疑われているので、このケースではうまく動作しませんでした。

さらに優れた解決策が必要です。

+0

私はcurl'はそれがフェッチ内容に一切変更を行い、そして、それは確かに再エンコードしないテキスト '信じていません。 – geoffspear

+0

こんにちは、ありがとう...しかし、私はなぜ、それはあなたがutf - 8として保存していないのだろうかと思って再エンコードデータを探していないよutf-8 – flyclassic

+0

あなたはutf-8として保存していないと思いますか?あなたは実際に何を達成しようとしていますか? – geoffspear

答えて

7

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

あなたの問題を回避するには、 "iconvの" を使用することができます:

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

は、このヘルプを願っています。

+0

私はこの方法で試しましたが、utf-8としてダウンロードされずにダウンロードされています。私はそれを開発してmb_check_encodingでチェックしたので、utf-8でxmlの内容がutf-8であることを確信しています。どうすればlinuxのファイルエンコーディング標準をチェックできますか?私はiso8859-1であることが判明したのかどうかはよく分かりません。iconvが動かないのはなぜですか? file -bi does me not me。 – flyclassic

+0

'file FILENAME'と入力すると、ファイルのエンコーディングをチェックすることができます。 'file'の出力をiconvを使わずにcurlでダウンロードしたXMLに対して投稿してください。 – user1202136

+0

Macの場合、iconvに頼りたくないし、受信したテキストのエンコーディングについてハードコードしたくない場合は、 'curl URL | textutil -cat txt -stdin -stdout -encoding utf-8' – algal

1

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 
関連する問題