JSP页面输入的数据也要转化UTF8的编码字符串在传人数据库
一劳用逸
在 MySQL 的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以一劳永逸的解决乱码问题。在这个配置文件中 [mysql] 与客户端配置相关,[mysqld] 与服务器配置相关。默认配置如下:
my.ini(Ctrl+F 查找),并根据需要配置相关项,之后重启MySQL 即可。
关键注意事项:
1、MySQL 的配置文件是分模块的,如[mysqld]、[client]模块等,里面的配置项必须是要该模块有的项,否则MySQL将无法启动。
[mysql]
default-character-set= utf8
2、修改character_set_server 的值,需要将character-set-server=utf8 配置在[mysqld]模块!(注意模块名与键名!utf8写成utf-8也会出错!),之后重启,查看编码,发现character-ser-server已经变成设置的utf8.
collation
-
server
=
utf8_general_ci
3
[client]
default-character-set = utf8
登录 mysql -u root -p
密码:Ltb6w@2018
查看默认编码格式:mysql> show variables
like
"%char%"
;
设置编码格式:
SET
character_set_client=
'utf8'
;
SET
character_set_connection=
'utf8'
;
SET
character_set_server=
'utf8'
;
查看数据库dudu的编码格式:
mysql> show
create
database
dudu;
设置数据库dudu的编码格式:
ALTER
DATABASE
`dudu`
DEFAULT
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;
查看数据表testTable的编码格式:
mysql> show
create
table
testTable;
设置数据表foot_ball的编码格式:
ALTER
TABLE
`foot_ball`
DEFAULT
CHARACTER
SET
utf8
COLLATE
utf8_general_ci;
创建数据库、数据表时指定utf8编码:
//建数据库
CREATE
DATABASE
`dudu`
CHARACTER
SET
'utf8'
COLLATE
'utf8_general_ci'
;
//建数据表
CREATE TABLE `foot_ball` (
`ID` varchar(40) NOT NULL default '',
`TREAM` varchar(40) NOT NULL default '',
`URL` varchar(40) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Incorrect string value: '\xE6\x9B\xB9\xE5\x86\xAC...' for column 'realname' at row 1
该情况一般是由数据库设计时的编码错误导致的。
show variables like 'character%' ; 查看数据库编码,为latin1。
如果项目正在测试当中,数据不重要的话,一劳永逸的解决办法是,使用 alter database 数据库名字 character set utf8; 更改数据库的编码格式,再重新建表。
注意:在 Hibernate中,指定hibernate.hbm2ddl.auto=create,重新部署项目,hibernate会自动重新建表。
如果项目中的数据是重要数据的话,使用 alter table 表名字 convert to character set utf8; 转换需要插入汉字的数据表编码为utf8即可(此例中的数据表是address):
为免操作不当,事先最好先备份好数据。
备份是个好习惯,是吧 *~*
memento..