2016-01-14 22 views
6

をアップロード:文字エンコーディング私は、単純なHTMLフォームを持っている

<form action="/file/import" method="POST" enctype="multipart/form-data"> 
    <input id="csvFile" type="file" name="file"> 
</form> 

私は別の文字セットで保存されたCSVファイルをアップロードするとの問題を抱えています。 ブラウザで任意のファイルをUTF-8に変換して、このようにサーバーに送信することはできますか?

が、私はいくつかのオプションを試してみましたが、ngrepのブラウザによって送信されたデータを追跡し、本来はISO-8859-2で保存したファイルをアップロードした後: - >このため、いくつかの

  1. multipart/form-data; charset=utf-8enctypeを設定します理由はブラウザがContent-Type: application/x-www-form-urlencodedを送信しました - 指定されたenctypeを使用できなかったようです。

  2. formタグに属性を追加すると、accept-charset="UTF-8" - >効果はありません。

  3. <meta charset="UTF-8"><head>で使用すると効果がありません。

ファイルアップロードはこのように動作するはずです。私はサーバが異なるエンコーディングを気にするのではなく、むしろ標準的な方法でデータを受け取るようにしたい。しかし、それが不可能な場合は、ブラウザからサーバーに何らかの形でエンコーディングに関する情報を送信できますか?何かアドバイスありがとう、ありがとう。

答えて

0

コンテンツ(バイト)とエンコーディング(バイトの解釈)を区別する必要があります。 HTMLファイルのアップロード機能はバイトを転送するだけで、テキストファイルに限らずバイナリを転送することもできるため、解釈については気にしません。あなたのサーバはバイトを受け取るので、intepretationを処理する必要があります。

enctype=multipart/form-data; charset=utf-8は、サーバーがこれを処理できるように、文字セットに関するヘッダー情報を追加するだけです。ファイルをアップロードする前または後に変換をトリガーします。

関連する問題