私は3つの異なるソースからデータを受け取るWebアプリケーション(実際には単なるサーブレットです)を持っています:
- ソース A は UTF-8 で記述された HTML ドキュメントであり、 経由でデータを送信します
<form method="get">
。 - ソース B は ISO-8859-1 で記述されており、 経由でもデータを送信します
<form method="get">
。 - ソース C は ISO-8859-1 で記述され、 経由でデータを送信します
<a href="http://my-servlet-url?param=value¶m2=value2&etc">
。
サーブレットはリクエスト パラメータを受け取り、UTF-8 を使用してそれらを URL デコードします。ご想像のとおり、A は問題なく動作しますが、B と C は失敗します (ISO-8859-1 でエンコードされているものを UTF-8 で URL デコードすることはできません...)。
B と C を少し変更することはできますが、ISO-8859-1 から UTF-8 に変更することは許可されていません。これにより、すべての問題が解決されます。
B では、 に追加することで問題を解決できましaccept-charset="UTF-8"
た<form>
。そのため、ページが ISO であっても、データは UTF-8 で送信されます。
Cを修正するにはどうすればよいですか?
または、サーブレットの文字セットを特定する方法はありますか?それぞれの場合に適切なエンコーディングで URL デコードを呼び出すことができますか?
編集:私はちょうどこれを見つけました。これは私の問題を解決するようです。パフォーマンスに影響を与えるかどうかを判断するために、まだいくつかのテストを行う必要がありますが、その解決策に固執すると思います.