整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          完美解決PHP中文亂碼問題

          完美解決PHP中文亂碼問題

          HP中文亂碼一般是字符集問題,編碼主要有下面幾個問題。

          一.首先是PHP網頁的編碼

          1. php文件本身的編碼與網頁的編碼應匹配

          a. 如果欲使用gb2312編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=gb2312"),靜態頁面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。

          b. 如果欲使用utf-8編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=utf-8"),靜態頁面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的編碼格式為utf-8。保存為utf-8可能會有點麻煩,一般utf-8文件開頭會有BOM,如果使用session就會出問題,可用editplus來保存,在editplus中,工具->參數選擇->文件->UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。

          2. php本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼。

          二.PHP與Mysql的數據交互

          PHP與數據庫的編碼應一致

          1. 修改mysql配置文件my.ini或my.cnf,mysql最好用utf8編碼

          復制代碼代碼如下:

          [mysql]

          default-character-set=utf8

          [mysqld]

          default-character-set=utf8

          default-storage-engine=MyISAM

          在[mysqld]下加入:

          default-collation=utf8_bin

          init_connect='SET NAMES utf8'

          2. 在需要做數據庫操作的php程序前加mysql_query("set names '編碼'");,編碼和php編碼一致,如果php編碼是gb2312那mysql編碼就是gb2312,如果是utf-8那mysql編碼就是utf8,這樣插入或檢索數據時就不會出現亂碼了

          三.PHP與操作系統相關

          Windows和Linux的編碼是不一樣的,在Windows環境下,調用PHP的函數時參數如果是utf-8編碼會出現錯誤,比如move_uploaded_file()、filesize()、readfile()等,這些函數在處理上傳、下載時經常會用到,調用時可能會出現下面的錯誤:

          Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...

          Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...

          Warning: filesize() [function.filesize]: stat failed for ... in ...

          Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..

          在Linux環境下用gb2312編碼雖然不會出現這些錯誤,但保存后的文件名出現亂碼導致無法讀取文件,這時可先將參數轉換成操作系統識別的編碼,編碼轉換可用mb_convert_encoding(字符串,新編碼,原編碼)或iconv(原編碼,新編碼,字符串),這樣處理后保存的文件名就不會出現亂碼,也可以正常讀取文件,實現中文名稱文件的上傳、下載。

          其實還有更好的解決方法,徹底與系統脫離,也就不用考慮系統是何編碼。可以生成一個只有字母和數字的序列作為文件名,而將原來帶有中文的名字保存在數據庫中,這樣調用move_uploaded_file()就不會出現問題,下載的時候只需將文件名改為原來帶有中文的名字。實現下載的代碼如下

          復制代碼代碼如下:

          header("Pragma: public");

          header("Expires: 0");

          header("Cache-Component: must-revalidate, post-check=0, pre-check=0");

          header("Content-type: $file_type");

          header("Content-Length: $file_size");

          header("Content-Disposition: attachment; filename=\"$file_name\"");

          header("Content-Transfer-Encoding: binary");

          readfile($file_path);

          $file_type是文件的類型,$file_name是原來的名字,$file_path是保存在服務上文件的地址。

          幾天保存了網絡上的一個頁面,瀏覽器打開后,發現是亂碼。如下圖:

          亂碼網頁

          出現這個問題怎么處理呢?下面幫你解決

          頁面html源碼

          查看html,看到這里用了國標標準,看源碼截圖

          <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

          解決方法:

          把gb2312改成utf-8即可

          修改為utf-8

          修改后的結果,如圖:

          修改后的展示

          知識分享:

          utf-8 和gb3212 的區別

          utf-8 這個是國際通用字庫,支持各種不同的語言

          gb3212這個是中國的字庫,支持簡體中文和少數外語+一些符號,文件資源少一點

          區別:utf-8跨平臺兼容性更好,由于它字庫更全所以加載會慢好多

          html的charset屬性

          charset屬性是定義HTML文檔的字符編碼格式。

          常見的字符編碼有:Unicode、utf-8、gbk、gb2312

          其中:

          gbk是國家標準的擴展版(增加了繁體并包含所有亞洲字符集)

          Unicode是國際組織制定的旨在容納全球所有字符的編碼方案,包括字符集、編碼方案等。又稱為萬國碼、統一碼、單一碼

          下三種字符集設置為一致,即可解決運行php文件后出現亂碼的問題。

          1、PHP編輯器的字符集

          以Zend Studio作為PHP程序的編輯器為例,創建一個project時,要將字符集設置為“UTF-8”。

          2、網頁預定義使用的字符集

          在要運行的.php文件或者.html文件之前,加入網頁對于字符集的預定義語句:

          <meta http-equiv="Content-type" Content="text/html;charset=UTF-8;" />

          3、瀏覽器查看網頁的字符集

          以firefox瀏覽器為例,在一,二設置完成后,運行.php程序,如果還出現亂碼,點擊瀏覽器選項欄》查看》更改編碼》UTF-8。

          以上就是php運行文件亂碼的詳細內容,更多請關注其它相關文章!

          更多技巧請《轉發 + 關注》哦!


          主站蜘蛛池模板: 99精品久久精品一区二区| 中文字幕亚洲一区二区三区| 亚洲无人区一区二区三区| 亚洲爽爽一区二区三区| 国产精品视频一区麻豆| 爆乳熟妇一区二区三区霸乳| 国产吧一区在线视频| 国产情侣一区二区三区| 精品亚洲福利一区二区| 精品一区精品二区制服| 国产精品熟女一区二区| 精品久久一区二区| 亚洲色欲一区二区三区在线观看 | av无码一区二区三区| 中文激情在线一区二区| 精品无码一区二区三区电影| 亚洲熟女少妇一区二区| 一区二区三区在线视频播放| 精品国产一区二区三区在线| 毛片一区二区三区| 一区一区三区产品乱码| 国产成人精品无码一区二区| 中文字幕亚洲一区二区va在线| 内射白浆一区二区在线观看| 精品国产一区二区三区AV| 亚洲AV无码国产精品永久一区 | 亚洲A∨精品一区二区三区下载 | 国产福利电影一区二区三区久久久久成人精品综合 | 不卡无码人妻一区三区音频| 亚洲成av人片一区二区三区| 狠狠做深爱婷婷综合一区| 亚洲片一区二区三区| 琪琪see色原网一区二区| 亚洲国产精品一区二区第四页| 日本一区二区在线免费观看| 一区二区三区视频在线播放| 日本午夜精品一区二区三区电影| 美女视频在线一区二区三区| 久久久91精品国产一区二区三区| 久久99精品波多结衣一区| 国产精品福利一区二区久久|