问题一:在我们进行数据库操作时会发现,数据库中表的编码用的是utf-8,但是在进行dos命令是要使用set names gbk
(一)Mysql中默认字符集设置有四级:服务器级,数据库级,表级,和字段级 前三种都是默认设置,并不代表你的字段最终会使用这个字符集设置
(二)set names 这个mysql命令设置是客户端发出的命令编码,连接层编码,和服务器端返回结果的编码,相当于客户端和服务器交互用的编码,而不是数据保存的编码
问题二:在我们使用的时候;当我们set names utf 的时候,用select命令来显示表格内容时,里面的中文还是会变成乱码,而gbk则正常
(一):set names是用来设置php与mysql通信的字符编码,即 :php文件编码格式为gbk或者gb2312的话,在进行数据查询的时候,要设置mysql通信的编码格式为gbk
(二):UTF8不要导入gbk , gbk不要导入UTF8
(三):DOS下不支持UTF8显示
UTF-8和utf8的区别:
(一)首先PHP在windows下边英文是不区分大小写,UTF-8它是标准写法,所以可以写成utf-8
(二)UTF-8也可以把中间的”-“省略,写成UTF8,一般程序都能识别,但也有例外,所以为了严格一些,做最好的自己用标准大写UTF-8
(三)在数据库中只能使用“utf8”(MySQL) ,在MySQL的命令模式中只能使用“utf8”,不能使用“utf-8”,也就是说在PHP程序中只能使用“set names utf8(不加小横杠)”,如果 你加了“-”此行命令将不会生效,但是在PHP中header时却要加上“-”,因为IE不认识没杠的“utf8”,原因见下文。
PHP中的header: <?php header('Content-Type: text/html; charset=UTF-8'); ?>
//奇怪了:Content-Tyep用冒号,Chatset却是等号。
静态文件使用: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
总结:【只有在MySQL中可以使用“utf-8”的别名“utf8”,但是在其他地方一律使用大写“UTF-8”。】 具体为: 在命令“mysql_query(set names utf8)”外一律用大写“UTF-8”。