0

我使用一个小的 HTML 表单来请求 tomcat 服务器(servlet)。如果我使用“GET”请求,我实现的“SetCharacterEncodingFilter”效果很好,结果显示了所有德语“元音变音”。但是如果我使用 POST 请求(不幸的是我需要这样做),所有的“元音变音”看起来都很有趣 ;-)

HTML 部分如下所示:

<form id="form1" name="form1" method="POST" 
accept-charset="uft-8" 
action="http://localhost:8080/foo">
<p>
<label for="textfield"></label>
<textarea name="text" id="text" 
cols="45" rows="5"></textarea>
</p>
</form>

小服务程序部分:

protected void processRequest(HttpServletRequest request, 
HttpServletResponse response)
throws ServletException, IOException, JSONException, Exception {

response.setContentType("text/html;charset=UTF-8");

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

... 
...

有人可以帮忙吗?

提前致谢!

4

2 回答 2

0

不要在响应中设置字符集。这对客户发送给您的内容没有影响。它只会影响您发回给客户的内容。

而是在获取参数之前尝试在请求上设置字符集:

request.setCharacterEncoding("UTF-8") // or ISO-8859-1, you have to check
String querytext = request.getParameter("text");

您获得的字符集取决于最初发送到客户端的 HTTP 标头,因此浏览器通常会尊重这一点并为 POST 使用相同的字符集。

于 2012-10-18T22:01:31.463 回答
0

对于 GET 请求,您需要在 server.xml 中的 tomcat 连接器标记上设置 URIEncoding="UTF-8";对于 POST 请求,字符集过滤器应该可以工作,但它必须是配置的第一个过滤器。见:http ://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3

于 2015-12-02T08:55:45.930 回答