私は、POSTメソッドを受け取るサービス(休憩中)を実装しています。クライアントがhttp content-typeヘッダーフィールドに文字セットを指定するのに間違っていますか?
私のシステムのエンコーディングはUTF-8です。明示的なcharsetパラメータが送信者によって提供されていない
、メディア:要求を受信するサーブレットがそれを述べrfc2068のHTTP 1.1仕様に追従する私は、JBoss 5を使用してい
、 「テキスト」タイプのサブタイプは、HTTPを介して受信されたときにデフォルトの文字セット値が「ISO-8859-1」と定義されています。そう
私のサービスを呼び出すクライアントは、例えば、UTF-8のために使用され、文字セットを指定していない、とPOSTのボディがUS-ASCII以外の文字が含まれている、のJBossサーブレットは「ISOを想定しています"-8859-1"と "間違った"改変を行い、私のシステムでは "壊れた"文字を受け取る。たとえば、文字列 "día"の代わりに "dÂa"が表示されます。
私は私のシステムは、コンテンツタイプパラメータに文字セットを指定するには、クライアントを必要とすることで、「保護」が見つかりアプローチ。文字セットが指定されていない場合、http 403と「文字セット値を指定する必要がある」というテキストで応答します。
この方法に問題はありますか?
クライアントが 'Content-Type:text/plain;を送信するとどうなりますか? charset = ISO-8859-1'と 'UTF-8'の本文はありますか? –
@ルーク私はその場合、あなたは私よりも守備的なアプローチを取らなければならないと思います。おそらく体を調べる。 [この投稿](https://stackoverflow.com/questions/499010/java-how-to-determine-the-correct-charset-encoding-of-a-stream)をご覧ください。 –