MYSQL关于字符编码方面的存储原理
* mysql首先将拿到的数据转换为character_set_client指定的编码格式,然后转换为 character_set_connection指定的格式,最后再将数据存储到数据库,存储格式为character_set_database所指定的格式;
* 从数据库读数据时,将数据库格式转换为character_set_results指定的格式,再发送给外部程序,这就要求客户端程序和character_set_results编码格式相同;
* 为了避免引起乱码问题,建议在创建数据库时先设置编码格式:SET NAMES 'utf8',这条命令相当于以下三条命令:
* SET character_set_client = 'utf8';
* SET character_set_connection = 'utf8';
* SET character_set_results = 'utf8';
* 同时从数据库select数据时,设置编码格式:SET NAMES 'utf8',网上说执行insert,update操作时似乎不需要设置,我的没设置没问题;
* 网上说用utf8存储datetime字段出错且在utf8编码下无法正常显示,但在gb2312下能正常显示
相关文档:
首先需要卸载redhat自带的mysql数据库(不然安装时会出问题)
rpm -qa|grep mysql
然后 rpm -e 包名称
如果涉及到依赖,就先删除依赖,或者加个 -nodeps 参数忽略依赖
有网友说用yum -y remove mysql也可以
另一个解决方法时在linux自带mysql基础上再装新的mysql
二进制安装包版本很多,常用的就两个,我下的是 ......
1.struts.xml中设置
<constant name="struts.il8n.encoding" value="UTF-8"></constant>
2.jsp页面设置
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
3.数据库连接url
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=u ......
1.登录MySQL终端 2.授权:
允许所有机器访问MySQL服务器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH RIVILEGES;
允许指定机器访问MySQL服务器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'IP地址'IDENTIFIED BY 'password' WITH GRANT OPTION; ......
C API相关
C API数据类型
MYSQL
该结构代表1个数据库连接的句柄。几乎所有的MySQL函数均使用它。不应尝试拷贝MYSQL结构。不保证这类拷贝结果会有用。
MYSQL_RES
该结构代表返回行的查询结果(SELECT, SHOW, DESCRIBE, EXPLAIN)。在本节的剩余部分,将查询返回的信息称为“结果集&rdq ......