Xampp Mysql 乱码

看了不少文章,大多数只是讲怎么操作,不涉及原理,很是失望,就像无头苍蝇一样乱撞。

首先看下php+Mysql+Apache环境下涉及到的字符集:

技术分享

介绍数据库内部存储字符集:

  “数据库内部存储字符集”是指数据在数据库中以何种编码进行存储。包括三种粒度的字符集:服务器字符集、数据库字符集和数据库表字符集。这三种字符集的优先级依次升高,数据库表字符集的优先级大于数据库字符集大于服务器字符集。

character_set_server/default_character_set指的是服务器字符集;character_set_database指的是数据库字符集;character_set_table指的是数据库表字符集。

介绍客户端请求字符集和请求结果字符集:

  character_set_client:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求以该字符集进行编码。

  character_set_results:结果字符集。服务器向客户端返回结果或者信息时,结果以该字符集进行编码。

  在客户端,如果没有定义character_set_results,则采用character_set_client字符集作为默认的字符集。所以只需要设置character_set_client字符集。

character_set_connection

  The character set used for literals that do not have a character set introducer and for number-to-string conversion.

Mysql字符集转换过程:

技术分享

SET NAMES ‘charset_name‘ [COLLATE ‘collation_name‘]:

技术分享

在Php代码中加入:mysql_query("SET NAMES UTF8");

参考文献:

http://www.laruence.com/2008/01/05/12.html

http://dev.mysql.com/doc/refman/5.5/en/charset.html

http://jingyan.baidu.com/article/48a42057c069d7a9242504fb.html

http://m.blog.csdn.net/blog/zexin1000/7956935

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。