echo顯示中文亂碼的有關問題

來源:互聯網
上載者:User
echo顯示中文亂碼的問題
PHP代碼如下:
echo "
  • ISBN:".$isbn."
    書名:".$name."
    作者:".$author."
    ";

  • 資料由資料庫中擷取後賦值到$isbn。
    顯示亂碼

    加代碼:
    echo "";

    後:


    怎麼解決啊??
    ------解決方案--------------------
    沒事為何要加mysql_set_charset("gbk");?

    難怪會這樣,所以才覺得資料庫裡的不是UTF8

    mysql_set_charset("gbk"); 等於 mysql_query("set names gbk"); 你已經轉過一次,再轉UTF8。。。
    ------解決方案--------------------
    utf-8 編碼的 書名 在 gbk 環境中會顯示成 涔﹀悕
    此時從資料庫中讀取的資料顯示正常
    由此可知:從資料庫讀取的資料是 gbk 編碼的,這一點可從發出 utf-8 語言聲明後,亂碼情況反過來了加以佐證

    按你目前的情況,你需要 $isbn = iconv('gbk', 'utf-8', $isbn); 即將讀出的資料做從 gbk 到 utf-8 的編碼轉換
    並應有 header('Content-type: text/html;charset=utf-8'); 語言聲明的頭

    出現這種現象的原因是:
    資料庫為 latin1 的
    欄位是 utf8 的
    插入是的資料是 gbk 的
    由於沒有在插入資料時聲明字元集,所以 gbk 的內容被當做 latin1 插入到了 欄位中
    讀出時同樣也沒有聲明字元集,於是欄位中的資料又當做 latin1 原樣讀回來了
    其實這是很正常的,資料庫本來就不該改變儲存的資料
    不然放進倉庫的是汽車,取回時變成了摩托,那不就亂了套了嗎?

    對於資料庫已有的資料也只有這樣了,如不想放棄則需要做轉碼處理(很費事的)
    以後再插入和讀取資料時一定要注意:先執行 set names XXX 指令,注意:這個 XXX 是當前資料的字元集名
    比如將 gbk 資料插入就 mysql_query("set names gbk");
    將資料按 utf-8 取回就 mysql_query("set names utf8");

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.