我从一个Sql Server字段中,读取一个Text类型的字段内容,显示在网页上面,都是正常的,但我通过页面提交后,保存进入Oracle数据表中后,在从Oracle中读取出来时,汉字却出来乱码情况,请各位大侠、前辈、兄弟姐妹们帮帮我这可怜的人吧!
解决方案 »
- java新手连数据库项目
- 一个IO题目,自己有些拿不准,又没办法试验(在网吧)
- 构造函数的类型
- java調用外部應用程序在lunix環境下解rar壓縮包
- 请帮忙 关与串口
- linux下运行ant找不到Class
- 在哪里可以下载到JCreater?
- 求《Java图像编程实例库》光盘代码
- 哪里有 2003年度Javaworld编辑奖最佳Java书籍的下载,例如Patterns of Enterprise Application Architecture
- 求大神指导Java小程序题异常部分变量问题
- 关于java图形界面的问题:为什么运行后我的程序不能正常显示应该显示的界面
- vector里面包换多个hashtable,如何把这些K-V Pairs取出来
另外,你用的是什么WEB服务器?
给Web应用加上过滤器,做一个Fiter,对所有请求统一使用UTF-8编码
package com.inventec.scm.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class EncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
System.out.println("====initEncodingFilter");
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 IOException, ServletException {
// TODO Auto-generated method stub
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null) {
request.setCharacterEncoding(encoding);
}
}
chain.doFilter(request, response);
} public void destroy() {
// TODO Auto-generated method stub
this.encoding = null;
this.filterConfig = null;
} protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
在Web.xml中配置过滤器,使之能起过滤作用
<!-- Encoding Filter -->
<filter>
<filter-name>Encoding</filter-name>
<filter-class> com.inventec.scm.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
创建数据库库与表时,设定charset.
CREATE TABLE `article` (
…
) ENGINE=InnoDB DEFAULT CHARSET=GB2312;
此处要用GBK或GB2312编码
<%@ page contentType="text/html; charset=GB2312" %>
<% request.setCharacterEncoding("GB2312"); %>
如果同样的代码读取oracle数据库就不会有问题,这是为什么呀?