如何处理java中的特殊字符jsp

问题描述:

我在我的index.jsp窗体标签页面上有一个文本框输入字段。当我在我的文本框中插入字符,然后点击提交按钮后,它将我带到其相应的servlet。从servlet我使用request.getParameter()获得文本框的值。然后将该值显示为页面上servlet的响应。但是在servlet响应中,它显示了一个垃圾值:â€,而我想要输出相同的字符()。如何处理java中的特殊字符jsp

文件:

的index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="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"/> 
     </head>  
<html>    
<body> 
<form action="hello.do" method="post"> 
<input type="text" name="t1"/><br> 
<input type="submit"/> 
</form> 
</body> 
</html> 

的servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     String s=request.getParameter("t1"); 
     response.setContentType("text/html"); 
     PrintWriter out=response.getWriter(); 
     out.println(s); 
     System.out.println("inside servlet: "+s); 
    } 
+1

尝试 - 'response.setContentType(“text/html; charset = UTF-8”);' – hagrawal

+0

@JSK:请您测试Balus建议的答案,并让我们知道结果。 – hagrawal

看起来你是不是在HTTPServletResponse得到正确编码字符。

因此,您可以使用方法setCharacterEncoding("UTF-16LE")和servlet响应,它将响应的字符编码(MIME字符集)发送到客户端,例如UTF-8。如果字符编码已由setContentType(java.lang.String)setLocale(java.util.Locale)设置,则此方法覆盖它。

Ex。 response.setHeader("Content-Type", "text/xml; charset=UTF-16LE");

+0

这已经由JSP'pageEncoding'完成了。看到重复。 – BalusC