您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何用php修改中文編碼格式”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何用php修改中文編碼格式”吧!
一、中文編碼方式的種類
在介紹如何改變中文編碼格式之前,需要先了解中文編碼方式的種類。
GBK/GB2312
GBK是“漢字內(nèi)碼擴(kuò)展規(guī)范”的簡稱,是中國國家標(biāo)準(zhǔn),它是GB2312的擴(kuò)展集,支持了全世界上萬種漢字的編碼。GBK編碼支持繁體中文、簡體中文、日本、朝鮮等語言文字。
UTF-8
UTF-8是通用多字節(jié)編碼技術(shù),可對(duì)Unicode進(jìn)行可變長度編碼,它可以表示Unicode標(biāo)準(zhǔn)中的任意字符,且向后兼容ASCII。
二、php中處理中文編碼問題
獲取表單中數(shù)據(jù)的編碼格式
在獲取表單中的數(shù)據(jù)之前,需要先確定該數(shù)據(jù)的編碼方式??梢酝ㄟ^使用php的mb_detect_encoding函數(shù)來判斷所獲取的數(shù)據(jù)編碼方式。
例如:
$encode = mb_detect_encoding($_POST['name'], array("ASCII","UTF-8","GB2312","GBK","BIG5"));
這個(gè)函數(shù)會(huì)依次檢測該數(shù)據(jù)是否為ASCII、UTF-8、GB2312、GBK、BIG5編碼方式,如果檢測到該數(shù)據(jù)的編碼格式為UTF-8,則返回UTF-8編碼方式。
轉(zhuǎn)換編碼格式
在知道了數(shù)據(jù)的編碼格式之后,就需要將其轉(zhuǎn)換為所需要的編碼格式。在php中,有兩個(gè)方法可以用來轉(zhuǎn)換編碼格式:
① mb_convert_encoding() :
$new_name = mb_convert_encoding($_POST['name'], 'UTF-8', 'auto');
使用 mb_convert_encoding() 函數(shù)將 $_POST['name'] 中的數(shù)據(jù)轉(zhuǎn)換成UTF-8編碼形式,并賦值給新的變量$new_name。
② iconv() :
$new_name = iconv($encode, "UTF-8", $_POST['name']);
使用 iconv() 函數(shù)將 $_POST['name'] 中的數(shù)據(jù)從 $encode 編碼方式轉(zhuǎn)換成UTF-8編碼方式,并賦值給新的變量$new_name。
三、中文編碼問題的實(shí)際應(yīng)用
在實(shí)際開發(fā)中,我們經(jīng)常會(huì)遇到需要將數(shù)據(jù)庫中的中文數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換的情況。
例如,在從數(shù)據(jù)庫中讀取中文數(shù)據(jù)時(shí),通常需要將其轉(zhuǎn)換為UTF-8編碼方式:
mysql_query("SET NAMES 'UTF8'");
$result = mysql_query("SELECT * FROM `table`");
while($row = mysql_fetch_array($result)){
$new_name = iconv("GB2312", "UTF-8", $row['name']);
}
在將中文數(shù)據(jù)寫入數(shù)據(jù)庫時(shí),同樣需要將數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)庫所支持的編碼方式:
mysql_query("SET NAMES 'GBK'");
$new_name = iconv("UTF-8", "GBK", $_POST['name']);
mysql_query("INSERT INTO `table` (`name`) VALUES ('".$new_name."')");
在表單數(shù)據(jù)提交時(shí),為了避免中文亂碼,也需要將數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換:
$new_name = iconv("UTF-8", "GBK", $_POST['name']);
mysql_query("INSERT INTO `table` (`name`) VALUES ('".$new_name."')");
感謝各位的閱讀,以上就是“如何用php修改中文編碼格式”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何用php修改中文編碼格式這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。