복붙노트

[SPRING] JSP 페이지 인코딩 문제

SPRING

JSP 페이지 인코딩 문제

나는 JSP 페이지에서 데이터 인코딩과 관련하여 몇 가지 문제점을 갖고있다 (Spring MVC를 사용하고있다). 다음과 같이 보입니다.

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

<%
     response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1
     response.setHeader("Pragma", "no-cache"); //HTTP 1.0
     response.setDateHeader("Expires", 0);
     response.setCharacterEncoding("UTF-8");
     request.setCharacterEncoding("UTF-8");
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

.....
<form method="post">            
        <input type="text" name="txt" value="${Name}" />
        <input type="submit" value= OK /> 
</form>

........

내 응용 프로그램은 입력 텍스트 상자에서 텍스트를 가져 와서 데이터베이스 (HSQLDB)에 씁니다. 영어 글자를 사용하여 데이터를 작성하면 모든 것이 잘 작동합니다! 그러나 입력 텍스트 상자에 러시아어 문자를 사용하려고 할 때 잘못된 인코딩 형식으로 이상한 문자를 씁니다. 이 문제를 피하는 방법?

어떤 아이디어?

해결법

  1. ==============================

    1.web.xml에서 문자 인코딩 필터를 구성해야합니다.

    web.xml에서 문자 인코딩 필터를 구성해야합니다.

    <filter>
        <filter-name>charsetEncodingFilter</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>
    </filter>
    
    <filter-mapping>
        <filter-name>charsetEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    요청 인코딩이 지정되지 않은 경우 서블릿 컨테이너는 POST 요청 데이터를 ISO-8859-1로 처리하지만 브라우저는 페이지 인코딩 (사용자의 경우 UTF-8)에서 양식을 제출하고 언변대로 인코딩을 지정하지 않으므로 필터가 필요합니다. 적절한 요청 인코딩을 지정합니다.

    편집 : BalusC에 의해 올바르게 언급했듯이 GET 요청의 인코딩 문제는 다루지 않습니다. Tomcat에서이 문제를 해결하려면 conf / server.xml의 에 URIEncoding = "UTF-8"을 설정해야합니다.

  2. from https://stackoverflow.com/questions/4298252/jsp-page-encoding-problem by cc-by-sa and MIT license