http://www.diybl.com/course/7_databases/mysql/myxl/20081127/152726.html
一、
mysql默认编码设置
www.firnow.com 时间 : 2008-11-27 作者:佚名 编辑:本站 点击: 676 [ 评论 ]
安装后
/etc/init.d/mysql start (stop) 为启动和停止服务器
/etc/mysql/ 主要配置文件所在位置 my.cnf
/var/lib/mysql/ 放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹
启动mysql后,以root登录mysql
isher@isher-ubuntu:~$ mysql -u root
>show variables like 'character%'; #执行编码显示
+--------------------------+----------------------------+
| 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 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
在某些时候,我们续要修改mysql默认数据库的编码,以保证某些迁移的程序可以正常显示,编辑my.cnf文件进行编码修改,windows可以直接用Mysql Server Instance Config Wizard 进行设置
在linux下修改3个my.cnf的1个/etc/mysql/my.cnf文件
找到客户端配置[client] 在下面添加
default-character-set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 默认字符集为utf8
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
修改好后,重新启动mysql 即可,查询一下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 | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
此方法用于标准mysql版本同样有效,对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf
二、
Mysql UTF8 解决乱码
1,设置mysql默认编码
首先查询一下show variables like 'character%';
确定所有的character都设置成utf-8
参考 “一”
mysql>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 | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
2,
a) 设置web容器的编码格式。为你的servlet的doGet或doPost方法开始处加入如下代码:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
b) 为每个jsp页面指定其编码格式。<%@ page pageEncoding="utf-8"%>
c) 在连接数据库用的URL后加入:useUnicode=true;characterEncoding=utf-8 如:
url="jdbc:mysql:///db1?useUnicode=true& amp;characterEncoding=utf-8",
如果是xml文件中 url="jdbc:mysql:///db1?useUnicode=true& characterEncoding=utf-8",
3,
如果还出现乱码,则有可能是 表中的字段 的编码不是utf-8;
如果出现乱码的表是 book
mysql> show create table book;
+--------------------------+----------------------------+
| Table | Create Table|
+--------------------------+----------------------------+
|book | create table 'book'(
'id' int(10) unsigned NOT NULL AUTO_INCREMENT,
'bookname' varchar(45) CHARACTER SET latin1 NOT NULL,
'source' varchar(45) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY('id')
) ENGINE= MyISAM DEFAULT CHARSET=utf8|
+--------------------------+----------------------------+
如果发现字段的字符集不是UTF8. 则对其进行修改
采用其他客户端工具来设定,例如 Navicat/MySQL Front/PhpMyAdmin
或者采用 ALTER 语法来转换字段的字符集
ALTER TABLE book CHANGE bookname bookname CHAR(20) CHARACTER SET utf8;
我在网上找到很多前2点的资料,但是怎么弄都还是乱码,最后才发现原来是字段的原因,折腾死了都。
参考资料:
mysql字符集 FAQ http://imysql.cn/taxonomy/term/24
设置mysql默认编码 http://www.diybl.com/course/7_databases/mysql/myxl/20081127/152726.html
用UTF-8完全解决JSP MYSQL多国语言文字编码问题 http://www.360doc.com/content/070428/10/16749_471035.html
发表于 @ 2009年09月12日 02:38:00