重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1. 查看MySQL数据库的默认编码
站在用户的角度思考问题,与客户深入沟通,找到遂平网站设计与遂平网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、申请域名、网页空间、企业邮箱。业务覆盖遂平地区。
有如下两种方式,
(1)使用status命令
mysql status;
图1 status命令
(2)使用show variables命令
mysql show variables like 'char%';
图2 show variables命令
如果要查看某个数据库的编码,在运行上面的命令前,应先执行use db_name;命令切换数据库(db_name为要查看的数据库名)。
2. 改变MySQL数据库的默认编码
安装MySQL数据库时的默认编码是latin1,实际使用时可能要使用其他编码。下文描述如何将默认编码改为utf8:
首先修改MySQL的配置文件/etc/mysql/my.cnf:
在[client]下追加:
default-character-set=utf8
在[mysqld]下追加:
character-set-server=utf8
在[mysql]下追加:
default-character-set=utf8
修改完毕后,使用如下命令之一重启mysql服务:
service mysql restart
/etc/init.d/mysql restart
改变后,之前手工创建的数据库如未显式指定编码,则其编码仍是默认的latin1,可使用如下命令更改编码:
mysql alter database db_name CHARACTER SET utf8;
参考资料:
[1]
首先,到mysql\bin
下面,利用mysqldump这个工具,执行以下命令:
mysqldump
--u=root
-p
--default-character-set=latin1
--set-charset=utf8
--skip-opt
--result-file=c:\mytable.sql
mydb
mytable
其中:root
为数据库登录名,
latin1
为源表(就是想进行转码的表)的编码,
utf8
为想转换成的编码,
c:\mytable.sql
为导出的数据的存放文件(临时用),
mydb是源表所属的数据库(schema),mytable
就是源表名了
执行这条命令,会提示输入密码,输入正确的密码以后,就开始导出数据了。等到数据全部导出以后,可以用ue等工具打开,这时可以看到这些数据的编码已经转变了。
然后需要对这个文件进行一点点更改。在文件的最开头有一个建表语句。类似于:
Java代码
CREATE
TABLE
`mytable`
(
`tableid`
bigint(20)
unsigned
NOT
NULL,
`c1`
int(10)
unsigned
NOT
NULL
default
'0',
`c2`
int(10)
unsigned
NOT
NULL
default
'0',
PRIMARY
KEY
(`tableid`)
);
注意看最后的分号,缺少了一点点东西:engine=myisam
DEFAULT
CHARSET=utf8
engine
和
charset
的意义地球人都知道啊...
将这一段加进去。结果可能是这样:
Java代码
CREATE
TABLE
`mytable`
(
`tableid`
bigint(20)
unsigned
NOT
NULL,
`c1`
int(10)
unsigned
NOT
NULL
default
'0',
`c2`
int(10)
unsigned
NOT
NULL
default
'0',
PRIMARY
KEY
(`tableid`)
)
engine=myisam
DEFAULT
CHARSET=utf8;
其中engine
和
charset
改成期望的东西,如:innodb
gbk
等...
保存文件。(如果是用UE等工具即使文件大也不会等太久,如果用记事本打开的……恭喜你!
)
这样就成功了一半了,剩下的工作只需要导入这个转好码的数据了。
将原来的那个表改名,一是为了备份,二是防止导入的时候说表已经存在。
然后还是进入mysql\bin
下面,运行:
Java代码
mysql
-u
root
-p
mydb
c:\mytable.sql
输入密码以后程序开始工作,一段时间以后,新表就出来咯...
mysql如何更改数据库字符编码?借助客户端工具很容易就可以更改了,下面来看一下。
01
打开navicat客户端工具,在左边找到要更改的数据库。
02
右键点击这个数据库,在菜单上点击数据库属性选项。
03
在弹出的属性窗口上,点击默认字符集下的下拉框。
04
在弹出的下拉选项里,点击选中要使用的字符集就行了,比如选择常用的utf8字符集,点击ok按钮就行了。
1.request.setCharacterEncoding("gbk");
response.setContentType("text/html charset=GBK");
2.在安装数据库的地方找到my.ini并设置default-character-set=GBK有两处
3.String URL = "jdbc:mysql://localhost:3306/test?useUnicode=truecharacterEncoding=gbk";
4.服务器默认编码 web.xml中
查看字符集设置
mysql show variables like 'collation_%';
mysql show variables like 'character_set_%';
修改数据库的字符集
mysqluse mydb
mysqlalter database mydb character set utf-8;
创建数据库指定数据库的字符集
mysqlcreate database mydb character set utf-8;
在之前的文章里,我已经提过如何解决JSP中乱码问题(解决tomcat下中文乱码问题 ),其中也详细解说了MYSQL乱码问题,相信通过里面的办法,肯定都已经解决了JSP里的乱码问题,不过还是有些人的MYSQL乱码问题没有得到解决,包括我自己,所以又找了一些资料,希望这次能完全解决MYSQL数据库的乱码问题。
第一种方法,很精辟的总结:
经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:
WINDOWS 下导入应该这样
使用MYSQL的命令
在 DOS命令下进入mysql的bin目录下,输入mysql -uroot -p密码 数据库名称要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码 test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。
只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");
数据库字符集为utf-8
连接语句用这个
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");
还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效
第二个方法:很不错的解说,可以试一下
mysql乱码处理总结:
(1)java中处理中文字符正常,在cmd client中显示乱码是字符集的问题.
(2)字段长度设置够长,但插入中文字符时提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column错误是字符集的问题.
(3)乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几个方面:server,client,database,connection,results.
-------------------------解决办法----------------------
(1)修改 my.ini(MySQL Server Instance Configuration 文件)
# CLIENT SECTION
[client]
port=3306
[mysql]
default-character-set=gbk
# SERVER SECTION
[mysqld]
default-character-set=gbk
(2)修改data目录中相应数据库目录下的db.opt配置文件
default-character-set=gbk
default-collation=gbk_chinese_ci
(3)数据库连接串中指定字符集
URL=jdbc:mysql://yourIP/college?user=rootpassword=yourPassworduseUnicode=truecharacterEncoding=gbk 注:在mysql4.1.0版 要加useUnicode=truecharacterEncoding=gbk 如果是5.0版以上的,加不加都是没有关系的!
(4)在创建数据库时指定字符集
create database yourDB CHARACTER SET gbk;
(5)在dos命令上要设置
set names gbk