本文目錄一覽:
- 1、php mysql_query(“set names utf8”);是什麼意思
- 2、PHP MYSQL亂碼問題,使用SET NAMES utf8校正
- 3、php向mysql表中寫入中文,讀出來是亂碼,編碼set names utf8
- 4、php和mysql資料庫編碼都是utf8,為什麼還要set names utf8???
php mysql_query(“set names utf8”);是什麼意思
mysql中文數據出現亂碼
資料庫採用UTF8編碼,而頁面申明編碼是GB2312,這是最常見的產生亂碼的原因。這時候在PHP腳本裡面直接SELECT數據出來的就是亂碼,需要在查詢前先使用:
mysql_query(“SET NAMES GBK”);或mysql_query(“SET NAMES GB2312”);
來設定MYSQL連接編碼,保證頁面申明編碼與這裡設定的連接編碼一致(GBK是GB2312的擴展)。如果頁面是UTF-8編碼的話,可以用:
mysql_query(“SET NAMES UTF8”); 注意是UTF8而不是一般用的UTF-8。假如頁面申明的編碼與資料庫內部編碼一致可以不設定連接編碼。
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query(“SET NAMES ‘GBK'”);
PHP MYSQL亂碼問題,使用SET NAMES utf8校正
先記下,免得以後想不起來又到處去找!
PHP操作資料庫的時候,資料庫中數據使用UTF8編碼,在讀出來的時候,顯示的全是???????問號亂碼,找了一些資料原來是在讀取之前進行一次編碼設置:
複製代碼
代碼如下:
create
table
tablename
(
id
int
not
null
auto_increment,
title
varchar(20)
not
null,
contnet
varchar(300)
defalut
null,
primary
key
(‘id’)
)begin=MyISAM
DEFAULT
CHARSET
=UTF8;
在插入數據之前執行:
複製代碼
代碼如下:
mysql_query(“SET
NAMES
utf8″);
然後
mysql_query(“insert
into
tablename
…..”)
讀出數據之前執行:
複製代碼
代碼如下:
mysql_query(“SET
NAMES
utf8″);
然後
mysql_query(“select
*
from
tablename”)
注意:此處讀出的編碼是把原來編碼的內容重新經過編碼後輸出的,比如輸出內容所在頁面是GBK編碼,那麼在讀出的時候在頁面顯示也為亂碼,所以在查詢之前執行
mysql_query(“SET
NAMES
gbk”),在頁面就可以正常顯示GBK編碼的文字內容
。
php向mysql表中寫入中文,讀出來是亂碼,編碼set names utf8
set
names
只是告訴資料庫,取出和存入的字元編碼是什麼,與資料庫內部使用什麼編碼儲存沒有關係。
既然你設定了utf8
那麼請檢查
php文件編碼是否是utf8,不是的話使用
header(‘Content-Type:text/html;
charset=utf-8′);
再檢查html頁面編碼是否utf8,不是的話使用
meta
http-equiv=”content-type”
content=”text/html;charset=utf-8″
/
php和mysql資料庫編碼都是utf8,為什麼還要set names utf8???
PHP是一種伺服器端HTML-嵌入式腳本描述語言。 其最強大和最重要的特徵是其資料庫集成層,使用它完成一個含有資料庫功能的網頁是不可置信的簡單。在HTML文件中, PHP腳本程序(語法類似於Perl或者c語言)可以使用特別的PHP標籤進行引用, 這樣網頁製作者也不必完全依賴HTML生成網頁了。由於PHP是在伺服器端執行的, 客戶端是看不到PHP代碼的。 PHP可以完成任何CGI腳本可以完成的任務,但它的功能的發揮取決於它和各種資料庫的兼容性。 PHP除了可以使用HTTP進行通信,也可以使用IMAP, SNMP, NNTP, POP3協議
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241382.html