2013-07-16 53 views
1

我想從特殊字符的文本框中獲取一些用戶輸入值。但是,當我得到它字符串被丟棄與特殊字符。Request.getparameter丟棄輸入中的特殊字符

一樣,如果單讀音傳遞輸入:聚& &(MER @) 下面的代碼給這個字符串:聚

HttpServletRequest request = ServletActionContext.getRequest(); 
     request.setCharacterEncoding("UTF-8"); 

     String text = (new String(request.getParameter("searchBarField") 
       .getBytes("UTF-8"))); 

在我的JSP中的字符編碼標籤是存在的。請建議。

+1

希望這個鏈接的回答可以幫助你!.. http://stackoverflow.com/questions/138948/how-to-get-utf-8 -working-in-java-webapps – Velu

回答

2

看來您的應用程序服務器未配置爲支持Unicode字符。如果您正在使用Tomcat Container。將URIEncoding設置爲連接器中的UTF-8

<Server port="8105" shutdown="SHUTDOWN"> 

<Service name="Catalina"> 
    <Connector port="8180" URIEncoding="UTF-8" /> 
    <Engine name="Catalina" defaultHost="localhost"> 
     <Host name="localhost" appBase="webapps" /> 
    </Engine> 
</Service> 
</Server> 

request.setCharacterEncoding("UTF-8")和獲取參數爲:

String text=request.getParameter("searchBarField"); 

另一種方式將是寫一個Filter它處理你的web應用程序的字符編碼。也看看這SO Q&A

+0

我試過這個,但沒有工作。其實問題出在jsp上。不是它的工作正常。非常感謝。 –

2

我有如下,它完美的工作你的問題..

我的JSP是的index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1" %> 
    <!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=ISO-8859-1"> 
    <title>Insert title here</title> 
    </head> 
    <body> 
    <form action="GetParameter"> 
    Name:<input type="text" name="name"> 
    <br> 
    <input type="submit" value="submit" /> 
    </form> 
    </body> 
    </html> 

而繼我的servlet來處理請求。

public class GetParameter extends HttpServlet { 
    protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 

     String name = request.getParameter("name"); 
     PrintWriter out = response.getWriter(); 
     out.write("Name is " + name); 

    } 

希望能與您的代碼....

+0

我得到了答案。其實問題出在我的jsp上。我正在通過location.href調用action。當我使用後,它工作正常。感謝你們的建議。 –

+0

謝謝@krupa。我的問題已經解決,但不是由您提供的解決方案。 –

+0

我有同樣的問題,對我來說,這個解決方案: 我用我的jsp頁面「ISO-8859-1」替換爲「UTF-8」。 我的jsp頁面聲明如下所示: <%@ page language =「java」contentType =「text/html; charset = UTF-8」pageEncoding =「UTF-8」%> – Muno