如何使servlet接受從JSP傳遞的非ASCII字符(阿拉伯語,漢語等)字符?如何啓用在Servlets中讀取非ASCII字符
我試過下面添加的JSP的頂部:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
,並添加下面的每個帖子/在servlet獲得方法:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
我試着添加執行上述兩個語句的過濾器,而不是在servlet中。
說實話,這些工作都在過去,但現在它不再工作了。
我在JDK1.6上的Win & Linux機器上使用了tomcat 5.0.28/6.x.x。
下面是一個例子: JSP頁:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Push Engine</title>
</head>
<body>
Hello ${requestScope['val']}
<form action="ControllerServlet" method="POST">
<table>
<tr>
<td>ABC</td>
<td><input name="ABC" type="text" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Submit"></td>
</tr>
</table>
</form>
</body>
</html>
的Servlet doGet方法:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String val = "request.getParameter('ABC') : " + request.getParameter("ABC");
System.out.println(val);
request.setAttribute("val", val);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
的問題是:在控制檯 ,值 「???」但是,返回值返回到包含正確Unicode字的JSP頁面
「???」打印到控制檯是我運行此測試的機器中的問題。 我在另一臺機器上運行過相同的例子,它工作正常!
哦,謝謝太多了,它實際上就是我想要的。 我的問題是因爲我發送了Get請求,而不是Post – 2010-04-13 16:31:36
不客氣。 – BalusC 2010-04-13 16:46:26
那麼,是不是有任何編程(相對於可配置)的方式來解決這個GET問題? – 2010-04-13 17:19:03