一、在JavaWeb开发时,出现乱码,一般都是因为字符集不匹配而造成的
解决方法:
1、jsp页面要加上字符集
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
2、在进行数据存取的后台(action、servlet)中指定字符集
Action:
ServletActionContext.getRequest().setCharacterEncoding("gbk");
Servlet:
httpServletRequest.setCharacterEncoding("gbk");
3、在数据库连接字符串中指定字符集
jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=gbk(注意要加characterEncoding=gbk)
4、创建数据库和表时,指定相同的字符集
二、就创建数据库进行详细的说明:
用MySql创建的数据库,在数据库级、表级、字段级,的字符集和校对方式是不同的,需要手动设置。
1、建立数据库,并指定字符集和校对方式
每一个数据库有一个数据库字符集和一个数据库校对规则。CREATE DATABASE和ALTER DATABASE语句可以用来指定数据库字符集和校对规则:
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
例如:
CREATE DATABASE db_student
DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
2、建表的时候 也要指定字符集
每一个表有一个表字符集和一个校对规则。为指定表字符集和校对规则,CREATE TABLE 和ALTER TABLE语句有一个可选的子句:
CREATE TABLE tb_name (column_list)
[DEFAULT CHARACTER SET charset_name [COLLATE collation_name]]
ALTER TABLE tbl_name
[DEFAULT CHARACTER SET charset_name] [COLLATE collation_name]
例如:
CREATE TABLE student (
ID varchar(40) NOT NULL default ”,
UserID varchar(40) NOT NULL default ”,
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
3、插入中文时,如果出现问题则修改配置文件
修改C:\Program Files\MySQL\MySQL Server 5.0\my.ini
里的 default-character-set=gbk
C:\Program Files\MySQL\MySQL Server 5.0\data\depot_development\db.opt
default-character-set=gbk
default-collation=gbk_chinese_ci
编码方式如果是UTF-8
1。创建数据库的时候:CREATE DATABASE `database`
CHARACTER SET ‘utf8′
COLLATE ‘utf8_general_ci';
2.建表的时候 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default ”,
`UserID` varchar(40) NOT NULL default ”,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.设置URL的时候 jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8