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

來源:互聯網
上載者:User

標籤:

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.