0

所以这是我的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 的初学者。

4

2 回答 2

1

这是一系列 4 个步骤

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

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

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

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

这是适合您的完美文章如何让 UTF-8 在 Java webapps 中工作?

于 2012-08-31T23:13:16.363 回答
1

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

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

send( encodeURIComponent(txtarea.value) );

在服务器端,我使用这个小功能对其进行解码:

java.net.URLDecoder.decode(request.getParameter("content"), "utf-8");
于 2012-09-03T09:00:12.970 回答