转mysql字符集及编码转换学习篇
mysql
服务器中有六个关键位置使用了字符集的概念,
他们是:
client
、connection
、database
、results
、server,
a
、其中client
是客户端使用的字符集,相当于网页中的字符集设置如下
<
meta http-equiv
=
"Content-Type"
content
=
"text/html;charset=utf-8"
>
。
b
、其中的
connection
是连接数据库的字符集设置类型,如果没有指明连接数据库使用的字符集类型,就按照服务器端默认的字符集设置。
c
、其中
database
是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
d
、
server
是服务器安装时指定的默认字符集设定。
server
是最高的字符集设定,database
没有单独设定就按照server
的字符集设定,其他都是按照server
的设定设置字符集。还有,数据库内的每个表和字段也都有字符集的概念,一般都是根据上一级结构决定自身的字符集,比如表就根据database
库的设定决定自己的字符集,字段根据表来决定自己的字符集。
二、统一字符集的方法:(以utf-8
字符集为例,因为他是目前支持文字种类最广的字符集)
1
、彻底解决字符集的方法:要彻底解决字符集的方法就是让mysql
在安装的时候就是用utf-8
的字符集设定,这样可以使上面的六个关键点的编码都为utf-8
。
a
、 在windows
下安装mysql
有提示可以选择字符集,我们选择utf-8
就可以了。
b
、在linux
下有三种安装方法,第一种是rpm
包安装,这种因为我没有使用过所以没有发言权。
第二种为可执行程序安装,这种安装因为已经被编译成了
latin1
这种瑞典语的字符集,所以无法完全解决字符集问题,这个版本我们后面会讲到怎么解决字符集问题。
第三种为源码自行编译安装,这种安装可以在编译时设置字符集类型,这部分主要讲这种安装方式。在编译mysql
是我们可以用这样的指令:./configure --default-character-set=utf8
。
这样,在编译的时候,就会把mysql
的server
项编译成utf8
的编码,这样这个mysql
下建立的所有数据库都将使用utf8
编码存储,所有有关的方面都是utf8
编码。
2
、局部坚决字符集的方法:如果遇到自己的数据库使用的是默认安装的
latin1
字符集的(很奇怪为什么mysql
要使用这么个默认字符集)的情况我们可以这样来解决。
a
、默认请况下我们在mysql
相关文档:
A Practical Look at the MySQL Query Cache
http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html
数据库缓存策略:
(1)缓存经常被使用的数据
(2)缓存经常执行的SQL和存储过程代码
(3)缓存数据库元数据信息,包括:对象结构缓存、安全信息等
mysql引擎所使用的缓存:
(1)myisam:key b ......
mysql 创建 数据库时指定编码很重要,很多开发者都使用了默认编码,但是我使用的经验来看,制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题。
我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来
很多mysql数据库工具(除了phpmyadmin,我偶尔用,功能强速度慢)都不支持创建时指定数据库编码, ......
最初的jbpm.hibernate.cfg.xml中,对MySQL的方言配置成了org.hibernate.dialect.MySQLDialect,发布流程的时候遇到下述错误:
Cannot delete or update a parent row: a foreign key constraint fails
Could not synchronize database state with session
将MySQL方言修改为org.hibernate.dialect.MySQLInnoDBDialect问 ......
近日,有一个项目需要通过OA系统(Domino平台)向一个MySQL应用插入记录,因为平台是windows平台,所以采用了ODBC连接方式,在OA服务器上安装了MyODBC-3.51.11-1驱动,配置了ODBC驱动数据源之后,插入记录成功,但不论是插入中文内容,还是从MySQL中读取中文内容,都是乱码,在网上查阅了各种资料,初步 ......
今天给新来的员工连接数据库,修改了一下mysql root用户的密码,我下载的是打包的redMine,默认密码是空,修改密码之后重启redmine,phpAdmin 链接不上mysql数据库了,我也修改了phpadmin文件夹下的config.inc.php的密码,还是不行,提示#1130 - Host 'localhost' is not allowed to connect to this MySQL server错误,明 ......