當前位置:編程學習大全網 - 編程語言 - php編程技術的亂碼解決

php編程技術的亂碼解決

PHP中文亂碼是軟件編程新手在進行PHP開發中的常見問題之壹,中文亂碼現像有時發生在網頁本身,有些產生在於MYSQL交互的過程中,有時與操作系統有關,下面進行總結:

最好最快的解決辦法就是使頁面申明的編碼與數據庫內部編碼壹致,如果頁面申請的編碼與數據庫內部的編碼不壹致時,那就設定連接編碼。Mysql_query(“setnames gb2312”) 或者 Mysql_query(“setnames utf8”)。

1、 php文件本身的編碼與網頁的編碼應匹配,如果欲使用gb2312編碼,那麽php要輸出頭

header(“Content-type:text/html;charset=gb2312”)。靜態頁面添加<meta http-equiv=”Content-type”content=”text/html; charset=gb2312”>,所有文件的編碼格式為ANSI,可用記事本打開,另存為選擇編碼為ANSI,覆蓋源文件。

2、 如果欲使用uft-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軟件來保存。在這個軟件中,選擇工具?參數選擇?文件?UTF-8簽名,選擇總是刪除,再保存就可以去掉BOM信息了。

3、PHP本身不是Unicode的,所有substr之類的函數得改成mb_substr(需要裝mbstring擴展);或者用iconv轉碼。在需要做數據庫操作的PHP程序前加mysql_query(“set names 編碼”),編碼和PHP編碼壹致,如果PHP編碼是gb2312那麽mysql編碼也就是gb2312,如果是uft-8,那麽mysql中就是utf8.這樣改過後就不會出現亂碼了。

4、header和meta之間區別。首先,header是php的內置函數,而meta是html的信息。其次,apache在給瀏覽傳遞網頁編碼內容時,如果發現php文件使用header設置網頁顯示編碼則將不會再解析meta設置的編碼。最後,如果妳寫的代碼是這樣,php文件header(“Content-type:text/html; charset=gbk2312”),靜態頁面添加<meta http-equiv=”Content-type”content=”text/html; charset=utf-8”>,瀏覽會默認顯示為gbk2312而不是utf-8。這些規則是apache和php之間的協議。

  • 上一篇:家庭防盜報警系統如何選擇
  • 下一篇:有支持我退學的嗎?我周圍的人卻沒有壹個人能了解我!
  • copyright 2024編程學習大全網