0

jsp で UTF-8 文字を表示するのに問題があります。

私はEclipse、jspファイル、Javaクラス、およびTomcat 7ビルドをEclipseで使用しています。私は3つのファイルを持っています:

 - index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="getProperties.jsp" method="post" name="GettingMovieParameters">
        Choose your name : <input type="text" name="hebrewMovieName"> 
        <input type="submit" value="send">
        </form>
    </body>
    </html>
  • getProperties.jsp

<jsp:useBean id="propertiesBean" class="my.movieDownloader.org.UserData" scope="session"/>
<jsp:setProperty name="propertiesBean" property="*"/> 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    Movie hebrew name is : <%= propertiesBean.getHebrewMovieName() %>
</body>
</html>



  UserData.java

    public class UserData {
    private String hebrewMovieName;

    public String getHebrewMovieName() {
        return hebrewMovieName;
    }
    public void setHebrewMovieName(String hebrewMovieName) {
        System.out.println("Setting up: "  +hebrewMovieName);
        this.hebrewMovieName = hebrewMovieName;
    }
}

Eclipseエディター、jspファイル、htmlファイルなどでUTF-8エンコーディングを設定しようとしましたが、何も機能しません。何が欠けているのかわかりませんが、誰かが私を助けてくれれば幸いです..ありがとう、または。

4

2 に答える 2

4

サーバ側

filter が解決策かもしれません。Spring の CharacterEncodingFilter を使用しました。

  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  ...
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

クライアント側

文字の表示や送信に問題がある場合は、jsp page ディレクティブを使用してページのエンコーディングを設定してみてください。

<jsp:directive.page contentType="text/html;charset=UTF-8"/>

(<%@page> タグと <meta> タグの両方を置き換える必要があります)

于 2013-02-20T06:39:51.060 に答える
2

受信投稿データの文字エンコーディングを正しく設定するには、webapp を構成する必要があるようです。残念ながら、デフォルトはここでは ISO-8859-1 であり、Tomcat は仕様で設定されたデフォルトに固執します。手動で UTF-8 に設定する必要があります。これはここで説明されています:

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3

短いバージョン:これをに追加するweb.xmlと役立つはずです:

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
于 2013-02-16T20:10:48.680 に答える