2012-08-31 12 views
7

हाय में मेरे पास टेस्टफील्ड है जिसमें मैं अंग्रेजी में परीक्षण नहीं करना चाहता (उदाहरण के लिए रूसी में) लेकिन मेरी एक्शन क्लास में मुझे केवल ????????? टेक्स्ट की बजाय मिलता है। मैं साधारण फिल्टर जो Parameters charset conversion in struts2struts2 में charset को utf-8

लेकिन यह अभी भी काम नहीं करते वर्णित लिखने की कोशिश कर .. किसी मदद कर सकते हैं मुझे

अद्यतन मैं इस enter image description here

<s:textfield key="index.login" name="login" /> 

मैं करना चाहते हैं इसे रूसी भाषा में परीक्षण करें और फिर इसे मेरी क्रिया में भेजें। लेकिन मेरी एक्शन क्लास में मुझे केवल ????????? टेक्स्ट की बजाय मिलता है। इस समस्या को ठीक करने के लिए मैं n win1251 के बजाय utf8 में charset को बदलने के लिए eed।

+0

आपने वास्तव में क्या प्रयास किया है? आपको यह बताने की ज़रूरत है कि आप वास्तव में क्या करने की कोशिश कर रहे हैं। आपके द्वारा प्रदान किया गया लिंक पहले ही ** ** यूटीएफ -8 एन्कोडिंग का उपयोग कर रहा है, इसलिए इस सवाल का कोई मतलब नहीं है। मुझे इस सवाल को बहुत कम समय में देखे गए सबसे खराब शोध प्रश्नों में से एक होने के लिए कम करना है। –

+0

आप पेज एन्कोडिंग क्या करते हैं? <% @ पृष्ठ भाषा = "जावा" सामग्री होना चाहिए टाइप = "टेक्स्ट/एचटीएमएल; वर्णसेट = यूटीएफ -8" पृष्ठ एन्कोडिंग = "यूटीएफ -8"%> और .java फाइलें कंधे यूटीएफ -8 भी होनी चाहिए। – gooogenot

उत्तर

11

एक फ़िल्टर बनाएं:

import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 

public class CharacterEncodingFilter implements Filter { 

    @Override 
    public void init(FilterConfig filterConfig) 
      throws ServletException { 
    } 

    @Override 
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) 
      throws IOException, ServletException { 
     servletRequest.setCharacterEncoding("UTF-8"); 
     servletResponse.setContentType("text/html; charset=UTF-8"); 
     filterChain.doFilter(servletRequest, servletResponse); 
    } 

    @Override 
    public void destroy() { 

    } 
} 

अपने web.xml में घोषित:

<filter> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <filter-class>your.package.filter.CharacterEncodingFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>CharacterEncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

और your're अच्छा जाने के लिए। यह भी सुनिश्चित करें कि आपके प्रत्येक JSP पृष्ठ में शामिल हैं: <%@ page contentType="text/html;charset=UTF-8" language="java" %>। यदि आपका एप्लिकेशन टॉमकैट पर चल रहा है, तो सुनिश्चित करें कि URIEncoding="UTF-8" आपके Connector तत्व में विशेषता जोड़ें।

+0

इसे काम नहीं करते ??????? –

4

आप के लिए jsp के लिए मजबूर करने की जरूरत है UTF-8 आप web.xml में निम्नलिखित लिख सकते हैं:

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

(previus प्रतिक्रिया पर टिप्पणी नहीं कर सकता)

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

ठीक है web.xml> 2.3

मुझे यकीन नहीं है कि 2012 में यह अभी तक मौजूद नहीं है, लेकिन ध्यान रखें कि यह तत्व है केवल web.xml> 2.4 के लिए उपलब्ध है (वह तत्व 2.3 http://java.sun.com/dtd/web-app_2_3.dtd में मौजूद नहीं है)।

संबंधित मुद्दे