日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP - 解决中文乱码问题

發(fā)布時間:2025/3/19 php 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)??
  • {??
  • ????/*?如果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 - 解决中文乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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