Mysql中文乱码问题的小结
概述:
1.乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几方面:
server(Mysql服务器),client,database(数据库),connection(连接),result
MySQL的字符集处理是这样的:
(1)发送请求
客户端(character_set_client)=》数据库连接(character_set_connection)=》存储数据库(table,column)
(2)返回请求
存储数据库(table,column)=》数据库连接(character_set_connection )=》客户端(character_set_results)在每一个非初始节点,都会做一次从上一个结点到当前节点的字符集转换操作。
2.MySQL中默认字符集的设置有四级:服务器级,数据库级,表级,字段级
设置步骤:
1.修改Mysql服务器的默认字符编码(Mysql安装目录下的my.ini文件)
CLIENT SECTION中设置default-character-set=utf8
SERVER SECTION中设置default-character-set=utf8
在Mysql命令行输入\s,查看Mysql服务器信息,其中有:
Server characterset:utf8
Db characterset:utf8
Client characterset:utf8
Conn. characterset:utf8
设置成功。
2.新建数据库、表、字段都会使用默认编码
3.页面编码采用与数据库相同编码(utf-8)
这样就不会出现乱码的情况了。
4.如果数据库编码和页面编码不一致时,那么在连接数据库时要指定与页面一致的编码方式,有两种方式:
mysql_set_charset(string charset,[link_identifier]):首选方式
mysql_query("SET NAMES 'charset'"):不推荐使用
mysql_set_charset() 比 mysql_query("SET NAMES 'XXX'")多了一个设置,就是把struct MySQL的charset成员也设置了。这个成员变量在escape的时候起着很重要的作用,特别是对于GBK这种运行把“”作为字符一部分的编码格式。如果你只使用mysql_query(”set names XXX”),那么在某些字符集,会有重大的安全漏洞,导致mysql_real_escape_string变得和addslashes一样不安全。
5.另外要注意的是页面文件编码方式与页面头部的meta信息中的charset一定要保持一致,这是最基本的设置。
相关文档:
官方手册上是这么写的:
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{f ......
该连接方式采用RPC来返回数据库查询结果。
1.首先是创建普通的GWT-EXT工程。可以参考1http://www.ibm.com/developerworks/cn/java/j-lo-gwtext1/#resources
系列 入 门 教程。具体通讯过程服务也可参考上述的最后部分说明。
2. 接下来就是要创建GWT Remote Service了,在原有工程上new-&g ......
过了一阵子后,为了写分布式作业,重新使用Mysql时,发现虽然启动成功了,但是连接的时候去出现如下错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
根据提示是/var/run/mysqld/mysqld.sock文件不存在。
为什么会这样呢?
  ......
Linux 编译安装 MYSQL 5.1 与 Innodb
编译mysql5
代码:
./configure \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \
--with-extra-charsets=all \
--with-charset=utf8 \
- ......
MySQL可以为不同的用户分配严格的、复杂的权限。这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现。 Grant可以把指定的权限分配给特定的用户,如果这个用户不存在,则会创建一个用户。
Grant 常用格式:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 ide ......