javaweb:
JDBC连接数据库时设置字符集(编码格式)
没试,为了将来留个记号
// Load the JDBC-ODBC bridge driver
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) ;
// setup the properties
java.util.Properties prop = new java.util.Properties();
prop.put( " charSet " , " Big5 " );
prop.put( " user " , username);
prop.put( " password " , password);
// Connect to the database
con = DriverManager.getConnection(url, prop);
前后端数据编码格式不同的转换
问题
>前端传过来的数据是乱码,原因是”编码格式“不一样,我用的是UTF-8
UTF-8下看其他编码格式:
iso-8859-1-->é??é??è?????
gbk---------->浣犲ソ
string存在于内存中时编码格式是UTF-16 Character (Java Platform SE 6)
解决办法
new String(s.getBytes("iso-8859-1"),UTF-8);//String构造方法,第二个参数是编码格式
/*getBytes(String charsetName)使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中*/
Mysql四个等级默认字符集设置不相同的处理办法
Mysql数据库的编码分为四级:
1、Mysql数据库服务器编码;
(在相应的配置文件中,需要修改配置文件)
2、Mysql数据库编码;
(可以在创建的时候指定,也可以在创建之后进行修改)
3、Mysq数据库中表的编码;
(可以在创建的时候指定,也可以在创建之后进行修改)
4、Mysql数据库表中字段的编码;
(可以在创建的时候指定,也可以在创建之后进行修改)
设置Mysql中的编码
修改表table的编码:alter table table_name default character set utf8
显示数据库表中的字符集设置以及创建数据库的脚本信息
show create table t1;
设置表的编码:
alter table table_name default character set utf8
显示数据库表中字段的字符集设置
show full columns from t1;
设置字段的编码
根据字段限制:
alter table table_name change old_filed_name
new_filed_name varchar(20)
not null default 'abc' character set utf8;
eg:alter table licensey change yid yid varchar(20) character set utf8;//没有的字段限制就不写
当前联接系统参数 //在MySQL Server 5.5\bin\my.ini 中存储
show variables like 'char%'或show variables like 'character%'
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQ\share\charsets\ |
+--------------------------+------------------------------+
8 rows in set (0.00 sec)
设置value与前台页面的字符编码一致(我的理解是:我进行中文字符串操作的地方)
set names gbk;
mysql> show variables like 'character%';
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQ\share\charsets\ |
+--------------------------+------------------------------+
8 rows in set (0.00 sec)
设置前:
mysql> insert into licensey (yjyfw,ytimestart,jname)
values ('麻醉药品','2016-01-08 00:00:00',170);
ERROR 1366 (HY000): Incorrect string value:
'\xC2\xE9\xD7\xED\xD2\xA9...' for column 'yjyfw' at row 1
设置后
mysql> insert into licensey (yjyfw,ytimestart,jname)
values ('麻醉药品','2016-01-08 00:00:00',170);
Query OK, 1 row affected (0.05 sec)
用SQLyog右键选择改变数据库就可以看到对应数据库的基字符集和排列规则
建表时可以设置字符集(编码格式)
create table时可以在末尾后面加上:
1. default character set utf8;
2. default charset=utf8;
列在创建的时候设置字符集就放在列的末尾:filed_name varchar(20) character set utf8
create table table_name(
filed_name varchar(20) character set utf8
)default character set utf8;