PHP+MySQL中對UTF-8,UTF8(utf8),set names gbk 的理解


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM