問題一:在我們進行數據庫操作時會發現,數據庫中表的編碼用的是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”。