天天看點

php的部分亂碼問題集的解決方法

        今天我終于開始自己寫一個完整的web模闆系統,是從零開始寫起的,以前做網站都是通過網上下載下傳一個模闆,然後修改頁面和部分動态代碼,然後就ok了,但是今天不一樣了,是從頭開始,因而這個我的畢業設計,哈哈,沒辦法,我的畢業設計的題目是“基于php技術的企業網站的模闆設計”,因而我今天開始寫mvc的一些測試類,當然,首先從網上下載下傳一個基于php的MVC留言本執行個體,這個執行個體有6個程式檔案:分别是index.php程式入口,notebook.htm留言表單,然後建立一個檔案夾,裡面有Model.php,View.php,Controller三個檔案分别實作MVC三個功能,還有一個DataAccess.php(是一個簡單的資料庫通路類),一開始我是通過系統右擊建立文本檔案來建立php檔案的,這裡需要提醒一下初學者,不要這樣建立php檔案,因為這樣會導緻中文亂碼的,正确的方法是通過Dreamweaver建立,然後在導航菜單“編輯”->“首選參數”->“建立文檔”裡,把預設編碼設定為“Unicode(UTF-8)”,“包括Unicode簽名(BOM)”的複選框去掉,就可以解決在調用php類時,類中需要用到return方法來傳回到靜态頁時,如果你不是按照以上的方式去做,有可能出現亂碼;

          亂碼問題:

1、在index.php調用到View.php的方法時,在擷取中文的時候出現亂碼,解決方法,就是用Dreamweaver建立,按上述操作,可以解決亂碼問題;

2、由于我用的是utf-8的字元集,是以mysql裡也要設定為utf8的字元集,如mysql的連接配接校對:utf8_general_ci,而表裡的字段的字元集是utf8_unicode_ci,在index.php的開頭要寫上<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,然後再DataAccess.php裡如下所示:

<?php

class DataAccess {

    var $link_id; //用于存儲資料庫連接配接

    var $query_id; //用于存儲查詢源

    //! 構造函數.

    function __construct($host,$user,$pass,$db) {

        $this->link_id=mysql_pconnect($host,$user,$pass); //連接配接資料庫伺服器

        mysql_select_db($db,$this->link_id);              //選擇所需資料庫

        mysql_query("SET NAMES 'utf8' ",$this->link_id);

    }

    function query($sql) {

        $this->query_id=mysql_unbuffered_query($sql,$this->link_id); // Perform query here

        if ($this->query_id) return true;

        else return false;

  }

    function fetchRows($sql) {

   $this->query($sql);

   $arr=array();

   $i=0;

   while( $row=mysql_fetch_array($this->query_id,MYSQL_ASSOC) )   {  

  $arr[$i]=$row;

  $i++;

    }

    return $arr;

    }

}

?>

按照上面的操作基本你能解決從mysql讀出的資料不會出現亂碼;

轉載于:https://blog.51cto.com/510522/441314