数据库编码问题
在学习JDBC的时候,想在数据表中插入一条带有中文的数据,结果报错 java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE7\x99\xBE...' for column 'username' at row 1
将URL中的 characterEncoding=UTF-8
删除后不报错,但是数据库中中文部分显示为???
。
原因如下:
数据库创建的时候,默认的编码不是UTF-8,还有数据表的编码,数据表中的字段编码都需要更改成UTF-8才能正常插入数据。
更改编码
数据库
查看数据库编码格式
show variables like 'character_set_database';
修改数据库的编码格式
alter database <数据库名> character set utf8;
数据表
查看数据表的编码格式
show create 'table_name'
更改数据表的编码:
ALTER TABLE 'table_name' DEFAULT CHARACTER SET utf8;
字段
更改字段的编码:
ALTER TABLE 'tablename' CHANGE '字段名1' '字段名2' VARCHAR(36) CHARACTER SET utf8 NOT NULL;
更改一张表中所有字段的编码
alter table 'tablename' convert to character set utf8;
创建时指定编码
创建数据库时指定数据库的编码
create database <数据库名> character set utf8;
创建数据表时指定数据表的编码格式
create table db4 (xxx, xxx) default charset = utf8;
参考连接: