我正在寻求帮助,将堆叠中的所有图层都改为UTF-8编码。
我找到了这篇不错的文章:
http://www.javapractices.com/topic/TopicAction.do?Id=206
描述了我需要担心编码的3个地方。由于我的(1)Oracle数据库当前设置为UTF-8,这使得(2)浏览器和(3)服务器不用担心。
我也找到了这篇详细的文章
http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html#JSPServletRequest
我试图遵循以下内容,但有一些关于实施的新手问题。
为了解决浏览器问题,我确保在每个JSP页面的顶部包含以下内容:
<%@page pageEncoding="UTF-8"%>
(供参考,参见here)。
为了解决服务器问题,我确保在发出request.getParameter()
或request.getAttribute()
语句之前在Java servlet和JSP页面中包含以下行:
request.setCharacterEncoding("UTF-8");
由于我使用的是GlassFish 3.1.2,我知道它默认不使用UTF-8,所以我需要以某种方式手动设置它。
我看过很多网站都在谈论一个名为glassfish-web.xml
的文件。这是普通glassfish的一部分吗?我不知道在哪里找到它。我一直在使用web.xml
文件夹中的WEB-INF
文件作为我的网络应用程序。有人可以帮我弄清楚我是否需要修改这个web.xml
文件,或者我是否需要找到或创建一个名为glassfish-web.xml
的新文件来配置glassfish的编码?
我的web.xml
文件以:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
...
对于JSP / servlet请求,我在web.xml
文件
<parameter-encoding default-charset="UTF-8"/>
可以放入web.xml
文件吗?或者,它是否需要进入某个glassfish-web.xml
文件?
对于JSP / servlet响应,我将以下内容放在web.xml
文件中(参见接受的答案here):
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config>
我假设这些行只是在<web-app>
和</web-app>
之间插入。但是,让我知道他们是否应该进入其他描述符(例如<glassfish-web-app>
和</glassfish-web-app>
)?
我还在JSP <head>
部分中添加了以下内容:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
有用的参考资料:
How to get rid of WARNING: PWC4011: Unable to set request character encoding to UTF-8
https://stackoverflow.com/tags/servlet-filters/info
https://wikis.oracle.com/display/GlassFish/FaqHttpRequestParameterEncoding
答案 0 :(得分:9)
glassfish-web.xml
是您可以在WEB-INF
文件夹中创建的文件。对于Glassfish 3.x,它必须与此类似:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<jsp-config>
</jsp-config>
<parameter-encoding default-charset="UTF-8" />
</glassfish-web-app>
你是对的,参数编码设置必须在这个文件中,而不是在web.xml
:)
另见: