如何处理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);
}
答
看起来你是不是在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
尝试 - 'response.setContentType(“text/html; charset = UTF-8”);' – hagrawal
@JSK:请您测试Balus建议的答案,并让我们知道结果。 – hagrawal