环境是Tomcat 6.0、mysql5、jsp
在mysql数据库里中文都能正常显示,但我用java 查出来的中文全变成乱码了。mysql驱动是:com.mysql.jdbc.Driver
url:jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=GBK
jsp中:<%@ page contentType="text/html;charset=GBK"%>数据库字符集:mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | D:\AppServ\MySQL\share\charsets\ |
+--------------------------+----------------------------------+
8 rows in set (0.06 sec)我甚至用了过滤器,还是不行,用java查询时:
DBConnect dbc=new DBConnect("select * from config");
ResultSet rs=dbc.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
rs.next();
for(int i=1;i<=rsmd.getColumnCount();i++){
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@----------"+rsmd.getColumnName(i));
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@-----------"+rs.getString(i));//此处中文全部变成???号了
forumHash.put(rsmd.getColumnName(i),rs.getString(i));
}
dbc.close();
哪位大侠知道一下啊,谢谢了
在mysql数据库里中文都能正常显示,但我用java 查出来的中文全变成乱码了。mysql驱动是:com.mysql.jdbc.Driver
url:jdbc:mysql://127.0.0.1:3306/bbs?useUnicode=true&characterEncoding=GBK
jsp中:<%@ page contentType="text/html;charset=GBK"%>数据库字符集:mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | D:\AppServ\MySQL\share\charsets\ |
+--------------------------+----------------------------------+
8 rows in set (0.06 sec)我甚至用了过滤器,还是不行,用java查询时:
DBConnect dbc=new DBConnect("select * from config");
ResultSet rs=dbc.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
rs.next();
for(int i=1;i<=rsmd.getColumnCount();i++){
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@----------"+rsmd.getColumnName(i));
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@-----------"+rs.getString(i));//此处中文全部变成???号了
forumHash.put(rsmd.getColumnName(i),rs.getString(i));
}
dbc.close();
哪位大侠知道一下啊,谢谢了
解决方案 »
- 资料显示问题,数量合计, 求一解决思路
- mybatis generator plugin问题
- JSP连不上Sql Server了 帮帮忙啊!
- iterator循环中最后一道循环?
- org.apache.jasper.JasperException: java.lang.NullPointerException错误,求助
- jspsmartupload的配置问题
- 不用window.open()方法弹出新窗口,怎么隐藏工具栏,菜单栏,地址栏。急啊!!!!!!!!!!!
- 会asp.net C#,公司是LINUX系统,是转JSP快还是PHP快?
- 关于打印的问题,请各位指教。
- applet里能访问数据库嘛???????????????????
- 调用dtree javascript报错
- 【还是】小小散分只问一个jfreechart问题
解决方法一:(最重要的一种方法)
你看下my.ini,有无
[mysql] default-character-set=utf8 [client]
default-character-set=utf8 [mysqld]
default-character-set=utf8
然后建立表时,也要用(比如)
DROP TABLE IF EXISTS `Company`;
CREATE TABLE IF NOT EXISTS `Company`
(
`Cname` VARCHAR(10) NOT NULL,
`Caddr` VARCHAR(100),
`Ctel` VARCHAR(16)
)ENGINE=InnoDB DEFAULT CHARSET=UTF8;
这样就没问题。 如果是jsp要声明:
contentType="text/html;charset=gb2312"
解决方法二: 连接mysql时(无论在从mysql读还是取数据的情况),指定使用的编码方式为utf-8,具体代码如下 //装载mysql-jdbc驱动 Class.forName("com.mysql.jdbc.Driver").newInstance(); //连接数据库 Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test? user=root&password=1&useUnicode=true&characterEncoding=utf-8" );
解决方法三: 如果方法一不行那么在方法一的基础上对读入的字符串进行强制编码方式转换。 代码示例如下: String name = rst.getString("name");
name= new String(name.getBytes("ISO-8859-1"),"utf-8"); 注:代码也可以为:String name =new String( rst.getString("name").getBytes("ISO-8859-1"),"utf-8"));其中rst为返回的resultset,ISO-8859-1为mysql默认的编码方式,代码的目的是把以ISO-8859-1的编码转换为gb2312编码方式,这样强制转换,可以解决一部分问题,如果结合方法一,应该可以解决中文乱码问题。
解决方法四: 这个方法在有些文章里是首推的,我首先也是试了这个方法,但是好像不行。这里还是说一下,不知是不是我操作错误。还是先贴原文吧: "如果数据库中有中文的话而mysql默认的语言不是中文时要在配置文件C:winntmy.ini 中的 [mysqld] 里添加一行: default-character-set=utf-8 然后重起mysql
方法五:在tomcat conf 里面的web.xml里面更改: <filter>
<filter-name>UTFEncoding</filter-name> <filter-class>com.founder.chenph.Util.EncodingFilter_UTF8 </filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UTFEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>UTFEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>