生活随笔
收集整理的這篇文章主要介紹了
PHP - 解决中文乱码问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
轉載地址:http://blog.csdn.net/amonest/article/details/6330467
PHP+MYSQL做網站開發(fā)通常都會碰到瀏覽器輸出中文字符時亂碼,這個問題的原因主要是因為HTML內容編碼,PHP文件編碼和MySQL數據庫編碼這三者不一致造成的。下面我們以UTF-8為例簡述一下如何統(tǒng)一這三者之間的關系。
?
新增一個PHP文件,命名為test_charset.php,將下面的代碼保存到該文件中:
[php] view plaincopy
<?php?????$charset?=?"utf8";????$con?=?mysql_connect("localhost",?"root",?"");????mysql_query("SET?character_set_connection=$charset,?character_set_results=$charset,?character_set_client=binary",?$con);????mysql_select_db("ecshop",?$con);????$sql?=?"SELECT?user_name,?email?FROM?ecs_admin_user?WHERE?user_id?=?4";??$result?=?mysql_query($sql,?$con);??$array?=?mysql_fetch_array($result,?MYSQL_ASSOC);??mysql_close($con);????$name?=?$array["user_name"];??$email?=?$array["email"];?????>??<html>??<head>??<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>??</head>??<body>????<h1>你好,?<?php?echo?$name;??>!</h1>??<h2>你的郵件是:<a?href="mailto:<?php?echo?$email;??>"><?php?echo?$email;??></a></h2>????</body>??</html>??
?
HTML內容編碼
上面的第22行:<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>,這里我們指定了瀏覽器在解析HTML時使用UTF-8編碼?。如果這里沒有指定,瀏覽器會使用自己缺省的編碼。不同的瀏覽器缺省編碼會有所不同,比如IE6是GB2312,FireFox是UTF-8。所以,上面這段代碼如果沒有第22行,在FireFox會顯示正常,在IE6就會顯示亂碼。
?
PHP文件編碼
PHP文件本身也需要有一致的編碼。如何檢查自己的PHP文件是哪一種編碼呢?Windows下簡單的可以用記事本來處理。用記事本打開PHP文件,從“文件”菜單中選擇“另存為...”,如下圖:
?
在打開的對話框最下面有一個“編碼”的選項,當前看到的就是該文件現(xiàn)在的編碼。如果要變?yōu)槠渌木幋a,從下拉列表框中選擇,然后點擊“保存”按鈕。
?
MySQL數據庫編碼
數據庫連接成功后,應該第一時間執(zhí)行一條設置編碼指令,如上面代碼的第7行。這里有一點需要特別注意,UTF-8是正常的寫法,不過在MySQL中簡寫成了UTF8,中間沒有橫線。上面第7行是將連接編碼設置成utf8($charset="utf8"),而不是utf-8。這里附上ECShop設置連接編碼的完整實現(xiàn),供大家參考。文件是includes/cls_mysql.php。
[php] view plaincopy
function?set_mysql_charset($charset)??{????????????if?($this->version?>?'4.1')??????{??????????if?(in_array(strtolower($charset),?array('gbk',?'big5',?'utf-8',?'utf8')))??????????{??????????????$charset?=?str_replace('-',?'',?$charset);??????????}??????????if?($charset?!=?'latin1')??????????{??????????????mysql_query("SET?character_set_connection=$charset,?character_set_results=$charset,?character_set_client=binary",?$this->link_id);??????????}??????}??}?
總結
以上是生活随笔為你收集整理的PHP - 解决中文乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。