如何使用POST方法从textarea获取servlet中的特殊字符?

时间:2012-08-31 17:08:20

标签: html jsp servlets encoding

所以这是我的HTML代码:

<!doctype html>
<html lang="fr">
  ...
  <form action="servlet" method="post">
    <textarea name="content" rows="30" cols="80" spellcheck="false"></textarea>
    <input type="submit" value="SEND" />
  </form>
  ...
</html>

然后是servlet部分

String content = request.getParameter("content");
System.out.println(content);

问题是,如果我在textarea中键入“é”,结果将打印为“?”。我可能是一个编码问题,但我不能使它工作。我试图在我的jsp页面中将字符编码更改为UTF-8,然后将以下行添加到我的servlet

request.setCharacterEncoding("UTF-8");

但它没有改变任何东西。我该怎么办 ?同样,我是JSP / Java EE的初学者。

2 个答案:

答案 0 :(得分:1)

这是一系列的4个步骤

首先,您必须配置您的网络服务器。

然后,您必须强制您的Web应用程序对所有请求/响应使用UTF-8编码。

第三,你必须使用JSP页面编码(你已经做过)

最后你必须使用HMTL-meta标签

以下是适合您的完美文章How to get UTF-8 working in Java webapps?

答案 1 :(得分:1)

好的,我终于开始工作了。我尝试了一切,但仍然有?而不是é,我想它可能是我的服务器故障,因为我不使用Tomcat或其他任何东西,但是嵌入式Jetty,配置不是那么清楚。

所以我使用JavaScript来发送正确编码的字符串:

send( encodeURIComponent(txtarea.value) );

在服务器端,我用这个小函数解码它:

java.net.URLDecoder.decode(request.getParameter("content"), "utf-8");