关于java的编码问题,个人的一个补充
来源:互联网 发布:淘宝盗版书店铺 编辑:程序博客网 时间:2024/05/20 06:09
java的编码问题,这里特指web方案的问题
一定要随时注意编码的改变情况,一般的都是form,url到request,以及数据库的另种转化操作,这些,在其它网上有能找到不再说了.
我只要用了一个过滤器来完成上述工作
public class CharacterEncodingFilter implements Filter {
/**
* The default character encoding to set for requests that pass through
* this filter.
*/
protected String encoding = null;
/**
* The filter configuration object we are associated with. If this value
* is null, this filter instance is not currently configured.
*/
protected FilterConfig filterConfig = null;
/**
* Should a character encoding specified by the client be ignored?
*/
protected boolean ignore = true;
public void init(FilterConfig filterConfig) throws javax.servlet.ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, javax.servlet.ServletException {
// Conditionally select and set the character encoding to be used
if (request.getCharacterEncoding() == null) {
String encoding2 = selectEncoding(request);
if (encoding2 != null)
request.setCharacterEncoding(encoding2);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
在web.xml里
<filter>
<filter-name>CharacterEncoding</filter-name>
<filter-class>com.rising.common.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<servlet-name>*.do</servlet-name>
</filter-mapping>
...
<url-pattern>*.jsp</url-pattern>
相关url的模式,不再详细解析了
这里还有一个,当里在直接在页面里用
<a href="err.jsp?msg=错误">aaa</a>
这里链接过去是正确的
但在servlet里用response.sendRedirect("err.jsp?msg=错误");就是出现乱码
这个东东花了我好长时间没有搞定,最乱静下心来想想,原因如下:
超级链接方式的中文:<a href="err.jsp?msg=错误">aaa</a>,如者直接在浏览器地址里输入的url信息,最后是能过我的过滤器经过GBK编号后进来request的而在response.sendRedirect("err.jsp?msg=错误");的中文信息是代码直接进入,并没有通过GBK编码而在err.jsp页面读err信息时,又用过滤器的GBK解码,故没有相对应,所以出错了.总结:servlet中直接用response.sendRedirect(url)中url有中文信息,必须要手动编码,这时过滤器并不会给你这里的代码编码的
- 关于java的编码问题,个人的一个补充
- 关于Java方法参数的个人补充
- 关于《c语言的一个小问题》的补充
- 关于python的编码问题的个人小结
- 请教一个关于编码的问题
- 编码中关于size_t的一个问题
- 关于一个时间补充的问题
- 关于数组的补充问题
- [JAVA]关于classpath的补充
- 收藏:jsp中java中文编码问题的个人经验
- 处理Java编码遇到的一个问题
- 关于JAVA的字符编码问题
- 关于java中url编码的问题
- 小议关于java字符编码的问题
- 关于java字符的编码问题学习
- 一个关于JAVA的问题
- 关于编码的问题
- 关于编码的问题
- 我看超女现象
- 《经济》杂志:李开复跳槽是PC时代的失败
- 会话类 Power.cs
- 关于解决 Java 编程语言线程问题的建议
- CBO Access Path
- 关于java的编码问题,个人的一个补充
- 计算N的阶乘
- What Is Business Process Modeling?
- Java十年 没有Java世界将会怎样?
- 回车键替换TAB
- 扯两句
- 怎样成为优秀的软件模型设计者?
- 好久没写东西了
- 墨家思想!