如何在PHP和Mysql中對(duì)UTF8編碼進(jìn)行轉(zhuǎn)換?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
PHP頁面轉(zhuǎn)UTF-8編碼問題
1.在代碼開始出加入一行: header("Content-Type: text/html;charset=utf-8");
2.PHP文件編碼問題 點(diǎn)擊編輯器的菜單:“文件”->“另存為”,可以看到當(dāng)前文件的編碼,確保文件編碼為:UTF-8,如果是ANSI,需要將編碼改成:UTF-8。
3.PHP文件頭BOM問題: PHP文件一定不可以有BOM標(biāo)簽,否則,會(huì)出現(xiàn)session不能使用的情況,并有類似的提示: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 這是因?yàn)?,在?zhí)行session_start() 的時(shí)候,整個(gè)頁面不能有輸出,但是當(dāng)由于前PHP頁面存在BOM標(biāo)簽,PHP把這個(gè)BOM標(biāo)簽當(dāng)成是輸出了,所以就出錯(cuò)了! 所以PHP頁面一定要?jiǎng)h除BOM標(biāo)簽
刪除這個(gè)BOM標(biāo)簽的方法:
1.可以用Dreamweaver打開文件,并重新保存,即可以去除BOM標(biāo)簽!
2.可以用EditPlus打開文件,并在菜單“選項(xiàng)”->“文件”->"UTF-8標(biāo)識(shí)",設(shè)置為:“總是刪除簽名”,然后保存文件,即可以去除BOM標(biāo)簽!
3.PHP以附件形式保存文件的時(shí)候,UTF-8編碼問題: PHP以附件形式保存文件,文件名必須是GB2312編碼,否則,如果文件名中有中文的話,將是顯示亂碼: 如果你的PHP本身是UTF-8編碼格式的文件,需要將文件名變量由UTF-8轉(zhuǎn)成GB2312: iconv("UTF-8", "GB2312", "$filename");
4.截?cái)囡@示文章標(biāo)題時(shí),出現(xiàn)亂碼或者“?”問號(hào)的問題:
一般文章標(biāo)題很長(zhǎng)的時(shí)候,會(huì)顯示一部分標(biāo)題,會(huì)對(duì)文章標(biāo)題進(jìn)行截?cái)?,由于一個(gè)UTF-8編碼格式的中文字符會(huì)占用3個(gè)字符寬度,截取標(biāo)題的時(shí)候,有時(shí)會(huì)只截取到一個(gè)中文字符的1個(gè)字符或2字符寬度,沒截取完整,將出現(xiàn)亂碼或“?”問號(hào)的情況,用下面的函數(shù)截取標(biāo)題,就不會(huì)有問題:
function get_brief_str($str, $max_length) { echo strlen($str) . ""; if (strlen($str) > $max_length) { $check_num = 0; for ($i = 0; $i < $max_length; $i++) { if (ord($str[$i]) > 128) $check_num++; } if ($check_num % 3 == 0) $str = substr($str, 0, $max_length) . "..."; else if ($check_num % 3 == 1) $str = substr($str, 0, $max_length +2) . "..."; else if ($check_num % 3 == 2) $str = substr($str, 0, $max_length +1) . "..."; } return $str; }
MYSQL數(shù)據(jù)庫(kù)使用UTF-8編碼的問題
1.用phpmyadmin創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表 創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,請(qǐng)將“整理”設(shè)置為:“utf8_general_ci”或執(zhí)行語句:
CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
創(chuàng)建數(shù)據(jù)表的時(shí)候:如果是該字段是存放中文的話,則需要將“整理”設(shè)置為:“utf8_general_ci”,如果該字段是存放英文或數(shù)字的話,默認(rèn)就可以了。
相應(yīng)的SQL語句,例如:
CREATE TABLE `test` ( `id` INT NOT NULL , `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ;
2.用PHP讀寫數(shù)據(jù)庫(kù)
在連接數(shù)據(jù)庫(kù)之后:
$connection = mysql_connect($host_name, $host_user, $host_pass);
加入兩行:
mysql_query("set character set 'utf8'");//讀庫(kù) mysql_query("set names 'utf8'");//寫庫(kù)
關(guān)于如何在PHP和Mysql中對(duì)UTF8編碼進(jìn)行轉(zhuǎn)換問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
新聞名稱:如何在PHP和Mysql中對(duì)UTF8編碼進(jìn)行轉(zhuǎn)換-創(chuàng)新互聯(lián)
文章地址:http://aaarwkj.com/article34/coiose.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、企業(yè)網(wǎng)站制作、做網(wǎng)站、用戶體驗(yàn)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容