2016-11-05 3 views
0

サーバ上にGPX(XMLの一種)ファイルを生成するプロセスがあります。ファイルがあるため、いくつかのアクセント付き文字のUTF-8エンコーディングを使用し、と頭の中でそれを指定します。サーバが `charset = utf-8`を指定し、ISO-8859としてダウンロードします。

<?xml version="1.0" encoding="UTF-8"?> 

また、Apacheサーバ上で、私はあなたがHEADコマンドを実行するか調べるので、もしAddTypeAddEncodingディレクティブを追加しましたあなたがそれをダウンロードした後、あなたがそれにfileコマンドを使用する場合はChromeデベロッパーツールでヘッダは、あなたが、しかし

Content-Type: application/octet-stream; charset=utf-8 

を参照してください、それが報告されます。

# file 9f90063f.gpx 
9f90063f.gpx: XML 1.0 document text, ISO-8859 text 

これは、ファイルを供給しているプログラムが混乱していると報告しているため、ファイルを消費している人に問題を引き起こしています。ファイルをISO-8859ではなくutf-8としてダウンロードするにはどうすればよいですか?

+0

1) 'application/octet-stream'はバイナリを意味するので、エンコーディングは意味をなさない。もしそれがXMLなら、何らかのXMLを宣言しなければなりません2) 'file'は正しいかどうか?宣言されたエンコーディングはもちろん、実際のエンコーディングとは関係ありません。 –

+0

'file'がどのくらい正確に動作するのかわかりませんが、ファイルにアクセント付きの文字(最初の128文字のASCII位置以外の文字)が含まれていないと、1バイトのエンコードされたファイルと区別できません。 UTF-8は、最初の128を超える文字だけが2バイト長であり、UTF-8として解釈されないと問題を引き起こすという点で柔軟性があることに注意してください。たぶんそれは「問題」(技術的には問題にならない)です。アクセント付きの文字を含むファイルが同じ 'file'出力につながることを確認できますか? –

+0

1) 'application/xml'と指定した場合、Chromeはダウンロードするのではなく、表示しようとします。それをダウンロードさせるために何かが欠けていますか? –

答えて

0

質問のコメントのおかげで、私は問題がダウンロードリンクになかったことを知ることができました。ファイルを生成したときでした。私はbinmode(XML, ":utf8")を追加し、正しくエンコードされているようです。

関連する問題