43

ページエンコーディングがのJSPページがありますISO-8859-1。このJSPページは質問回答ブログにあります。Q/A 投稿時に特殊文字を含めたいです。

問題は、エンコーディングを からに変更したにもかかわらず、JSP がUTF-8エンコーディングをサポートしていないことです。これらの文字 ( 、、、) が問題を引き起こしています。これらの文字を個別に、または任意の文字の組み合わせで投稿すると、データベースに保存され、アプリケーションの投稿中にこれらの文字を削除すると正常に動作します。ISO-8859-1UTF-8~%&+null

誰でも解決策を提案できますか?

4

14 に答える 14

77

この問題を回避するには、アプリケーションのすべてのレイヤーで同じエンコーディングを使用する必要があります。エンコーディングを設定するフィルターを追加すると便利です。

public void doFilter(ServletRequest request,
                     ServletResponse response,
                     FilterChain chain) throws ServletException {
   request.setCharacterEncoding("UTF-8");
   chain.doFilter(request, response);
}

JSP ページにエンコーディングのみを設定するには、次の行をページに追加します。

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

同じ文字エンコードを使用するようにデータベースを構成します。

文字列のエンコーディングを変換する必要がある場合は、次を参照してください。

HTML エンコードされたテキストをデータベースに保存することはお勧めしません。たとえば、PDF (または HTML 以外のもの) を生成する必要がある場合は、最初に HTML エンコーディングを変換する必要があります。

于 2012-10-04T08:43:40.350 に答える
35

完全なJSPタグは次のようになります。pageEncodingにも注意してください。

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

一部の古いブラウザもエンコーディングを台無しにします。HTMLタグを使用できます

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

また、Eclipseを使用している場合は、ファイルをUTF-8形式で記録する必要があります。ファイルを左クリックし、[プロパティ]->[チェックアウト]->[テキストファイルのエンコード]を選択します。

于 2012-10-04T12:01:41.697 に答える
18

また、「Ṁ Ů」のような文字を表示する際にも問題がありました。web.xml に以下を追加しました。

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

これにより、ヘッダーを除くページの問題が解決されました。これを解決するために多くの方法を試しましたが、私の場合は何もうまくいきませんでした。ヘッダーの問題は、ヘッダー JSP ページが別の JSP からインクルードされることでした。そのため、インポートにエンコーディングを指定すると、問題が解決しました。

<c:import url="/Header1.jsp" charEncoding="UTF-8"/>

ありがとう

于 2015-02-04T05:52:28.860 に答える
6

ファイルがUTF-8 エンコーディングで保存されていることを確認する必要があります。これは、いくつかのプレーン テキスト エディターで行うことができます。Notepad++ を使用すると、つまり、メニューで選択できますEncoding--> Encode in UTF-8Save AsWindows のメモ帳 ( --> UTF-8 エンコード)でも実行できます。Eclipse を使用している場合は、ファイルの [プロパティ] で設定できます。

また、問題がそれらの文字をエスケープする必要があるかどうかを確認してください。登場人物の 1 人が&.

于 2012-10-04T08:43:06.260 に答える
5

このスレッドが役に立ちます: UTF-8 でエンコードされた文字列としてリクエスト パラメータを渡す

基本的:

request.setCharacterEncoding("UTF-8");
String login = request.getParameter("login");
String password = request.getParameter("password");

または、jsp ファイルで JavaScript を使用します。

var userInput = $("#myInput").val();            
var encodedUserInput = encodeURIComponent(userInput);
$("#hiddenImput").val(encodedUserInput);

クラスで回復した後:

String parameter = URLDecoder.decode(request.getParameter("hiddenImput"), "UTF-8");
于 2013-10-23T16:49:24.880 に答える
5

これはよくある問題です。

解決する最も簡単な方法の 1 つは、特殊文字がアクション レイヤー内に到達しているかどうかを確認し、Java コードで特殊文字を変更することです。

この文字をアクションまたは選択した他の Java レイヤー (ビジネス レイヤーなど) で表示できる場合は、StringEscapeUtils.html#escapeHtmlを使用して、文字を対応する HTML 文字に置き換えるだけです。

脱出を果たした後。新しい文字列を使用して DB に保存します。

于 2012-10-04T08:56:46.197 に答える
2

これは、html の特殊文字です。なぜエンコードしないのですか?それをチェックしてください:http://www.degraeve.com/reference/specialcharacters.php

于 2012-10-04T08:37:59.490 に答える