最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

完美解決PHP中文亂碼

 更新時間:2009年11月26日 18:54:55   作者:  
PHP中文亂碼一般是字符集問題,編碼主要有下面幾個問題。
一.首先是PHP網頁的編碼
1. php文件本身的編碼與網頁的編碼應匹配
a. 如果欲使用gb2312編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=gb2312"),靜態(tài)頁面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。
b. 如果欲使用utf-8編碼,那么php要輸出頭:header(“Content-Type: text/html; charset=utf-8"),靜態(tài)頁面添加<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與操作系統(tǒng)相關
Windows和Linux的編碼是不一樣的,在Windows環(huán)境下,調用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環(huán)境下用gb2312編碼雖然不會出現這些錯誤,但保存后的文件名出現亂碼導致無法讀取文件,這時可先將參數轉換成操作系統(tǒng)識別的編碼,編碼轉換可用mb_convert_encoding(字符串,新編碼,原編碼)或iconv(原編碼,新編碼,字符串),這樣處理后保存的文件名就不會出現亂碼,也可以正常讀取文件,實現中文名稱文件的上傳、下載。
其實還有更好的解決方法,徹底與系統(tǒng)脫離,也就不用考慮系統(tǒng)是何編碼??梢陨梢粋€只有字母和數字的序列作為文件名,而將原來帶有中文的名字保存在數據庫中,這樣調用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是保存在服務上文件的地址。

相關文章

  • PHP實現判斷二叉樹是否對稱的方法

    PHP實現判斷二叉樹是否對稱的方法

    這篇文章主要介紹了PHP實現判斷二叉樹是否對稱的方法,涉及php遞歸二叉樹判斷節(jié)點的相關操作技巧,需要的朋友可以參考下
    2018-01-01
  • php傳值賦值和傳地址賦值用法實例分析

    php傳值賦值和傳地址賦值用法實例分析

    這篇文章主要介紹了php傳值賦值和傳地址賦值用法,以實例形式較為詳細的分析了php的常見賦值技巧,需要的朋友可以參考下
    2015-06-06
  • php獲取linux命令結果的實例

    php獲取linux命令結果的實例

    下面小編就為大家?guī)硪黄猵hp獲取linux命令結果的實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • PHP中trim()函數簡單使用指南

    PHP中trim()函數簡單使用指南

    PHP函數trim()是從字符串的兩端刪除空白字符和其他預定義字符,具體語法為trim(str,charlist),我們將會以代碼示例為大家具體講解
    2015-04-04
  • php5數字型字符串加解密代碼

    php5數字型字符串加解密代碼

    對應awk版加解密程序的PHP實現代碼
    2008-04-04
  • PHP可變函數的使用詳解

    PHP可變函數的使用詳解

    本篇文章是對PHP中可變函數的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP調用MySQL存儲過程并返回值的方法

    PHP調用MySQL存儲過程并返回值的方法

    這篇文章主要介紹了PHP調用MySQL存儲過程并返回值的方法,較為詳細的分析了存儲過程的使用技巧,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • PHP獲取時間戳等相關函數匯總

    PHP獲取時間戳等相關函數匯總

    PHP是一種廣泛使用的服務器端腳本語言,具有豐富的時間戳相關函數。本文介紹了PHP中獲取時間戳的常用函數,包括time()、strtotime()、date()等,并提供了使用示例。同時,還介紹了PHP中其他與時間相關的函數,如mktime()、microtime()等。
    2023-06-06
  • 說明的比較細的php 正則學習實例

    說明的比較細的php 正則學習實例

    首先,讓我們看看兩個特別的字符:’^’ 和 ‘$’ 他們是分別用來匹配字符串的開始和結束,一下分別舉例說明
    2008-07-07
  • curl 出現錯誤的調試方法(必看)

    curl 出現錯誤的調試方法(必看)

    下面小編就為大家?guī)硪黄猚url 出現錯誤的調試方法(必看)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論

旺苍县| 丁青县| 毕节市| 通渭县| 仪征市| 清水河县| 富平县| 祁阳县| 平顶山市| 南川市| 武乡县| 华坪县| 乌苏市| 内丘县| 河南省| 张家口市| 县级市| 文成县| 辰溪县| 阿城市| 上蔡县| 冕宁县| 凤凰县| 九龙城区| 噶尔县| 财经| 洪洞县| 紫金县| 沁源县| 城固县| 武鸣县| 雅安市| 普格县| 清流县| 渭南市| 吉水县| 平顶山市| 广东省| 库伦旗| 玉溪市| 达日县|