2017-09-27 21 views
0

「é」という文字列があり、URLを介して次のコントローラに送信すると、その文字が%C3%A9にエンコードされ、受信時に他のコントローラは、 "é"にデコードされます。 私の質問は、 "é"をURLにエンコードする方法です。他のコントローラで受信した場合、 "é"にデコードされますか?今のところ、私はそれらを手動で置き換えています。私はそれを自動的に、任意の特殊文字(éèà...)で行う方法が必要です ありがとうございます。URL経由で特殊文字を送信するJava

+0

[ 'にそれを宣言しますURLEncoder'](https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html)および['URLDecoder'](https://docs.oracle.com/javase/7 /docs/api/java/net/URLDecoder.html)? – KarelG

+0

[HTTP URLエンコーディングin Java](https://stackoverflow.com/questions/724043/http-url-address-encoding-in-java)の可能な複製 –

答えて

0

残念ながら、URLデータのエンコードを宣言する方法はありません。一般的なエンコーディングはISO-8859-1またはLatin1でしたが、現在ではUTF-8が新しい開発でよく使用されています。その理由は、サーブレット仕様では、文字セットが指定されていない場合はISO-8859-1が暗黙指定されていますが、HTML 4.0ではURLにUTF-8が推奨されているためです。

URLはバイトで構成されており、サーブレットコンテナはアプリケーションに渡す前にサーブレットコンテナからそれをJava文字に変換するため、サーブレットコンテナレベルで使用される文字セットを宣言する必要があります。互換性の理由から、バージョン8.0より前のよく知られているTomcatは、デフォルトでURLのLatin1文字セットを想定していました。 8.0.0以降、デフォルトは「strict servlet compliance」の設定に依存します。それは、ISO-8859-1たときに真とUTF-8偽

参考文献である:あなたの正確な質問については


、次の2つの方法がありますé文字を正しく処理する:

  • は変わらないサーブレットコンテナの設定のままにし、ISO-8859-1でURLをエンコードURLでUTF-8から
  • スティック(é%E9になります)が、サーブレットコンテナ
関連する問題