私のリクエストQueryparameter="आकुर्डी"
で。私がフォローしようとしているとき
String strstring = request.getParameter("Queryparameter");
"à¤à¤à¥à¤°à¥à¤¡à¥"
文字列が欲しいときにそれが得られます"आकुर्डी"
。
入手方法は?ここで何が問題なのですか?
私のリクエストQueryparameter="आकुर्डी"
で。私がフォローしようとしているとき
String strstring = request.getParameter("Queryparameter");
"à¤à¤à¥à¤°à¥à¤¡à¥"
文字列が欲しいときにそれが得られます"आकुर्डी"
。
入手方法は?ここで何が問題なのですか?
この問題は、クライアントが要求パラメーターの作成に使用している文字エンコードとは異なる文字エンコードを使用して要求パラメーターを解析したために発生します。人間の世界で知られているすべての文字との互換性を最大限に高めるには、クライアントとサーバーの両方がUTF-8
すべてのレイヤーで文字エンコーディングを使用していることを確認する必要があります。
リクエストの場合はGET
、リクエスト URI を として解析するように servletcontainer/appserver を構成する必要がありますUTF-8
。どちらを使用しているかはわかりませんでしたが、たとえば Tomcat の場合は、要素URIEncoding
の属性を次のように設定することで実行できます。<Connector>
UTF-8
<Connector (...) URIEncoding="UTF-8" />
別の servletcontainer/appserver を使用している場合は、そのドキュメントを参照して、リクエスト URI の文字エンコーディングを構成する方法を確認する必要があります。
リクエストの場合は、リクエスト パラメータを収集する前に、リクエスト ボディを使用して解析POST
するように に指示する必要があります。HttpServletRequest
UTF-8
HttpServletRequest#setCharacterEncoding()
request.setCharacterEncoding("UTF-8");
より多くの背景情報と、考慮に入れる必要がある他の領域のより多くの解決策 (たとえば、 として応答を生成しUTF-8
、クライアントに を使用するように指示するなどUTF-8
) については、このブログが役に立ちます。Unicode - 文字を正しく取得するには?