连接数据库的关键程序:
private ArrayList<BookDetails> books = null;
private String dbUrl = "jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=gb2312";
private String user = "root";
private String password = "fuyou";
jsp页面关键代码:<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@page import="com.fuyou.bean.BookDetails"%><jsp:useBean id="bookDB" scope="application" class="com.fuyou.database.BookDB"/><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
mysql.ini时关键:
[client]port=3306[mysql]default-character-set=latin1
# SERVER SECTION
我在cmd上用select *from books可以正常显示中文,数据库的编码:mysql> show variables like '%char%';
+--------------------------+-------------
-----+
| Variable_name | Value
|
+--------------------------+-------------
-----+
| character_set_client | latin1
|
| character_set_connection | latin1
|
| character_set_database | latin1
|
| character_set_filesystem | binary
|
| character_set_results | latin1
|
| character_set_server | latin1
|
| character_set_system | utf8
|
但在mysql_front上select * from books不能正常显示中文:
jsp和控制台上打印数据库的中文是乱码,用这个 System.out.println(new String(book.getDescription().getBytes("iso8859-1"),"gb2312"));可以正常显示中文!
除了用getBytes()方法,还有什么可以解决乱码?
private ArrayList<BookDetails> books = null;
private String dbUrl = "jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=gb2312";
private String user = "root";
private String password = "fuyou";
jsp页面关键代码:<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@page import="com.fuyou.bean.BookDetails"%><jsp:useBean id="bookDB" scope="application" class="com.fuyou.database.BookDB"/><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
mysql.ini时关键:
[client]port=3306[mysql]default-character-set=latin1
# SERVER SECTION
我在cmd上用select *from books可以正常显示中文,数据库的编码:mysql> show variables like '%char%';
+--------------------------+-------------
-----+
| Variable_name | Value
|
+--------------------------+-------------
-----+
| character_set_client | latin1
|
| character_set_connection | latin1
|
| character_set_database | latin1
|
| character_set_filesystem | binary
|
| character_set_results | latin1
|
| character_set_server | latin1
|
| character_set_system | utf8
|
但在mysql_front上select * from books不能正常显示中文:
jsp和控制台上打印数据库的中文是乱码,用这个 System.out.println(new String(book.getDescription().getBytes("iso8859-1"),"gb2312"));可以正常显示中文!
除了用getBytes()方法,还有什么可以解决乱码?
"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";试试吧! 这是所有乱码的情况! 我用的是MYSQL5.0 解决乱码就这样搞的!!!!!!!
在安装的时候选择GBK就可以.或者在MY.INI里面改也可以.
或者是把从数据库中读出的字符先转成byte数组,在编码成utf-8,保证解决问题
所有的编码都使用一种如:utf8
1.数据库编码:
String dbUrl = "jdbc:mysql://localhost:3306/BookDB&useUnicode=true&characterEncoding=utf8";
2.jsp编码
<%@ page language="java" contentType="text/html; charset=utf8"%>
3.增加记录的都转换为utf8编码如下:
content = new String(content.getBytes("iso8859-1"),"utf8"));