日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

PHP - 解决中文乱码问题

發布時間:2025/3/19 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP - 解决中文乱码问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載地址:http://blog.csdn.net/amonest/article/details/6330467

PHP+MYSQL做網站開發通常都會碰到瀏覽器輸出中文字符時亂碼,這個問題的原因主要是因為HTML內容編碼,PHP文件編碼和MySQL數據庫編碼這三者不一致造成的。下面我們以UTF-8為例簡述一下如何統一這三者之間的關系。

?

新增一個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文件,從“文件”菜單中選擇“另存為...”,如下圖:

    ?

    在打開的對話框最下面有一個“編碼”的選項,當前看到的就是該文件現在的編碼。如果要變為其它的編碼,從下拉列表框中選擇,然后點擊“保存”按鈕。

    ?


    MySQL數據庫編碼

    數據庫連接成功后,應該第一時間執行一條設置編碼指令,如上面代碼的第7行。這里有一點需要特別注意,UTF-8是正常的寫法,不過在MySQL中簡寫成了UTF8,中間沒有橫線。上面第7行是將連接編碼設置成utf8($charset="utf8"),而不是utf-8。這里附上ECShop設置連接編碼的完整實現,供大家參考。文件是includes/cls_mysql.php。

    [php] view plaincopy
  • function?set_mysql_charset($charset)??
  • {??
  • ????/*?如果mysql?版本是?4.1+?以上,需要對字符集進行初始化?*/??
  • ????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 - 解决中文乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。