2

私は現在使用しています

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

私のjspページで。

そして、request.getParameter("...");それを使用してテキストボックスからデータを取得すると、そのようなデータが取得されますöÉ?É?É?öİ。英語の文字ではない文字を使用したときに、この問題が発生しました。私は tomcatに追加URIEncoding="UTF-8"します。server.xmlしかし、それは同じを取得しました(öÉ?É?É?öİ)。それを解決する方法は?

ありがとうございました

編集

回答ありがとうございます。私はいくつかのことを試しましたが、何も問題を解決していません。

これが私がやったことです:

  • <Connector URIEncoding="UTF-8" .../>server.xmlに追加しました。

  • <meta ... charset=utf-8>タグは大丈夫です、試してみましたrequest.setCharacterEncoding("UTF-8");

  • <filter>私もweb.xmlでタグを試しました

これらのアクションのいずれも問題を解決しません。これに他に何か問題があるのではないかと思っています...(思い出してください:私は使用<form method='post'>しました。送信ボタンをクリックしrequest.getParameter("..")ましたが、このデータの形式を使用してデータを取得すると、正しい形式ではありません。)

4

7 に答える 7

2

サーブレットでこのコードを試すことができます

if(request.getCharacterEncoding() == null) {
    request.setCharacterEncoding("UTF-8");
}
于 2012-10-19T06:25:14.027 に答える
2

実際の文字エンコーディングが UTF-8 ではないためでしょうか? 文字自体が他の形式でエンコードされている場合、それらを UTF-8 としてラベル付けすることはできません。

さまざまな文字セットを指定してデコードしてみて、どれが適切な結果をもたらすかを確認してください。入力文字エンコーディングはlatin1(ISO-8859-1)だと思います。はいの場合、以下のコードに従ってください

String param1 = request.getParameter("...");
if(param1!=null)
{
  param1 = new String(param1.getBytes("ISO-8859-1"));
}
于 2012-10-19T06:54:36.600 に答える
2

アプリケーションのすべてのレイヤーで UTF 8 を設定する必要があります。

以下を実行

1) HTML コード

 <meta contentType="text/html; charset="UTF-8"/>

2) IE ビューのブラウザ設定 -- エンコード -- Unicode (UTF-8)

3) Tomcat Server server.xml - Connector タグに「URIEncoding」属性を追加

<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" URIEncoding="UTF-8"/>

catalina.sh/catalina.bat - 以下に追加

set JAVA_OPTS=--Xms256m -Xmx1024m -Xss268k -server -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -Djava.awt.headless=true -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8

set CATALINA_OPTS=-Dfile.encoding="UTF-8"

4) 応答の MIME タイプは「application/x-www-form-urlencoded」である必要があります

于 2012-10-19T09:52:02.443 に答える
1

もう一つ確認できる場所があります。JSP ファイルに次の宣言を含めましたか?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

問題は、ブラウザーがまだデフォルトの ISO-8859-1を使用してリクエストを送信していることだと思います。これは、宣言されていない場合の標準の文字セットです。

サーバーから受信した HTTP ヘッダーをチェックして、正しい文字セットが送り返されていることを確認することもできます。

于 2012-10-19T06:55:35.607 に答える
0

あなたはそれを試してみるべきです

String content= request.getParameter("content");
if(content!=null)
  content = new String(content.getBytes("ISO-8859-1"));
于 2016-08-03T07:38:54.380 に答える
0

基本的に最もクリーンな方法は、必要に応じてプロパティ ファイルやコードでUnicodeを使用することです (推奨されません)。

このようにして、すべてのエンコーディングの問題を回避できます。プログラムは ASCII コードのみを扱うため、適切な表現はクライアント側で完全に処理され、標準の OS エンコーディングや環境エンコーディングについて心配する必要はありません。

于 2012-10-19T07:10:47.363 に答える