sqlyog更改字符集编码_MySQL字符集设置
Linux(Ubuntu)环境描述具体操作,Unux与其基本⼀致,Windows路径配置上少有不同。
我们将讨论以下⼏个问题:
字符集问题表征
修正配置,设置默认字符集编码
在使⽤过程中强制设置字符集编码
1.字符集问题表征
MySQL默认latin1(其实就是ISO-8859-1)字符集。这显然不能满⾜我们的需要,因此我们把它调整为UTF8字符集,以兼容⼤多数字符集。
我们先来执⾏两条SQL,来检测下当前的MySQL默认字符集编码:
show variables like "%colla%";
show variables like "%char%";
mysql下载下来没安装包latin1字符集将给我们带来很多⿇烦,我们需要将其调整为UTF-8!
2.修正配置,设置默认字符集编码
这⾥,我们需要修改MySQL配置⽂件myf⽂件,Windows环境则是my.ini⽂件。
通常在linux环境下myf⽂件位于/etc/mysql路径下,但由于安装版本或是系统环境的不同,我们可能⽆法在这个⽬录中到该⽂件。MySQL将⾃动加载位于/etc下的myf⽂件。当然,该⽂件可能并不存在,我们则需要⼿动创建它!
引⽤
Default options are read from the following files in the given order:
/etc/myf /etc/mysql/myf /usr/local/mysql/etc/myf ~/.myf
修改/etc/mysql/myf⽂件:
echo 修改myf⽂件
sudo vi /etc/mysql/myf
输⼊/mysqld,到[mysqld],键⼊i 在末尾加上以下内容:
引⽤
#Set the default character set.
default-character-set=UTF8
键⼊ctrl+c终⽌输⼊,键⼊/client,到[client] 在末尾加上以下内容:
引⽤
#Set the default character set.
default-character-set=UTF8
键⼊ctrl+c终⽌输⼊,键⼊:wq保存退出。
如果当前⽂件不存在(解压缩版,或Mac安装版),则需要创建/etc/myf⽂件。该⽂件将作为MySQL环境全局配置:
echo 创建myf
sudo vi /etc/myf
将下述内容写到该⽂件中:
引⽤
[mysqld]
#Set the default character set.
default-character-set=UTF8
[client]
#Set the default character set.
default-character-set=UTF8
重启MySQL
sudo /etc/init.d/mysql restart
执⾏这两段SQL检测字符集设置:
show variables like "%colla%";
show variables like "%char%";
3.在使⽤过程中强制设置字符集编码
为确保字符集完全统⼀,在建表、建库的时候要强制设定统⼀字符集。
另外通过JDBC连接MySQL的时候为确保万⽆⼀失,连接字符串需要加上以下参数:
jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8
useUnicode=true&characterEncoding=UTF-8强制使⽤UTF8作为会话字符集编码。
当我们通过命令⽅式访问MySQL时,似乎就没有那么幸运了!尤其是遇到遗留系统数据库,⼀时半会不能改动字符集编码。
这个时候,执⾏SQL,在屏幕上就只能看到⼀堆乱码了!杯具了!
不过不要紧,我们可以在登录时指定会话级别的默认字符集(--default-character-set=utf8):
mysql -u root -p --default-character-set=utf8
也算是⼀个折中的办法!
⼤⼩: 18.5 KB
⼤⼩: 24.6 KB
⼤⼩: 19.1 KB
⼤⼩: 25.5 KB
⼤⼩: 43.6 KB
6
顶
踩
分享到:
2009-01-20 15:41
浏览 16236
分类:数据库
评论
5 楼
snowolf
2011-05-10
xutao5641745 写道
楼主,,我⽤的Windows service 2003 mysql 5.0 然后按照你的设置后,我必须在连接的时候指定 mysql -u root -p --default-character-set=GBK 这种编码,否则显⽰的时候是乱码。。请问这是为什么?我⽤第三⽅⼯具sqlyog enterprise 连接时,也只能指定gbk或者gb2312否则⽤select * from 表的时候,显⽰的也是乱码,请问这是为什么?是我哪⾥设置错误了么?
请看我的设置:
show variables like '%character%' ;
显⽰
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 C:\\Program Files\\MySQL\\MySQL Server 5.0\\share\\charsets\\
show variables like '%colla%';:
显⽰
collation_connectionutf8_general_ci
collation_databaseutf8_general_ci
collation_serverutf8_general_ci因为你本地的⼯具是GBK,因为你在windows下操作。我这个是标准的Linux配置。
4 楼
2011-05-10
楼主,,我⽤的Windows service 2003 mysql 5.0 然后按照你的设置后,我必须在连接的时候指定 mysql -u root -p --default-character-set=GBK 这种编码,否则显⽰的时候是乱码。。请问这是为什么?我⽤第三⽅⼯具sqlyog enterprise 连接时,也只能指定gbk或者gb2312否则⽤select * from 表的时候,显⽰的也是乱码,请问这是为什么?是我哪⾥设置错误了么?
请看我的设置:
show variables like '%character%' ;
显⽰
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 C:\\Program Files\\MySQL\\MySQL Server 5.0\\share\\charsets\\
show variables like '%colla%';:
显⽰
collation_connectionutf8_general_ci
collation_databaseutf8_general_ci
collation_serverutf8_general_ci
3 楼
xutao5641745
2011-05-10
楼主,,,建议你多发⼀些关于mysql 的⽂章,这样我就有⽬标了。。。
2 楼
snowolf
2010-03-20
jyllook6 写道
楼主啊 !!⿇烦你总结清楚点特别是视图,存储过程,存储函数,触发器.......这些啊,早点,,,
呵呵! 只是提点建议
呵呵,刚把书出了。还没顾上整理其他内容。别急,我对MySQL情有独钟。慢慢来~
1 楼
jyllook6
2010-03-20
楼主啊 !!⿇烦你总结清楚点特别是视图,存储过程,存储函数,触发器.......这些啊,早点,,,呵呵! 只是提点建议
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论