網頁(UTF-8) 於 瀏覽器 出現亂碼解法

前幾天聽到一件很有趣的事, 解法也很有趣.

網頁現在都是採用 UTF-8 編碼, 但是在 IE 呈現時, 卻是出現亂碼(自動偵測語系).

聽到的解法: 用 iconv() 把語言轉成 Big5 就可以出現中文, 當下是有點哭笑不得~ XD

正確解法有下面幾種:

  1. 於 HTML head 指定此頁編碼為 UTF-8

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

  2. PHP 送 Header 告訴瀏覽器這頁是 UTF-8 編碼

    <?php
    header("Content-Type:text/html; charset=utf-8");
    ?>

  3. 設定 Apache 送出頁面預設語系 UTF-8 (比較不建議用此方法)

    addDefaultCharset UTF-8

    # 不過建議這行要包在 Directory 或 VirtualHost 內, 才不會影響到其它網頁.
    <Directory "/var/*/blog">
    addDefaultCharset UTF-8
    </Directory>
     
    <VirtualHost *>
    addDefaultCharset UTF-8
    </VirtualHost>

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

  1. 另外補充一個我很久之前解過的狀況



    關於這個解法
    之間如果有顯示中文
    必須把放在meta之後<br /> 否則偶些瀏覽器常會出現一片空白的畫面

  2. 你好 我是php新手 可以問你一個問題嗎?
    我用Dreamweaver在寫 "加入會員" 的網頁
    我寫好後發現一個問題 當註冊資料填好 按送出後 沒辦法到我所指定的頁面
    而在原本的註冊頁面面顯示
    Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\wamp\www\register.php:1) in C:\Program Files\wamp\www\register.php on line 78
    這裡程式碼
    if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
    }
    header(sprintf("Location: %s", $insertGoTo));

  3. 嗯嗯, META 指定 UTF-8 編碼, 要放在在 Title 之前, 這樣子瀏覽器才不會找錯編碼, 出現一片空白.
    我記得之前有寫過畫面空白的解法, 好像有三種解法, 但是現在一時找不到.. Orz..
    感謝提供~ 🙂

  4. 哈, 感謝您的幫忙~ 😛
    BOM 的問題, 可以考慮先 打開 editplus(或其它編輯器), 去設定儲存時取消 BOM.
    再將檔案用 editplus 打開, 然後存檔一次即可~ 🙂
    註: 不好意思, 太久沒用 windows, 不知道有什麼編輯器可以用. Orz..

  5. 最近要寫Flash/PHP的程式...XP
    所以說時常逼著我要在Windows下寫PHP...Orz
    在Notpad++選單的"格式"就可以轉換了
    在Windows寫PHP沒選好編輯器都會有一堆奇奇怪怪的問題出現

  6. 預設瀏覽器是firefox3.5 檢視裡面的字元編碼預設是unicode(utf-8)
    我資料庫編碼是utf-8 echo資料庫的資料時是正常的
    但是單純echo "中文"的話 就會變亂碼
    雖然可以把檢視的編碼改成正體中文後就可以正常顯示..不過還是很困擾是哪裡出了問題:(

  7. 我用的是pspad 我之前爬文已經有先去改過預設存檔的編碼
    很蠢的是 我一直都是echo同一支程式 即使我另存新檔再echo還是一樣
    不過剛剛看到您的提醒後 我試著開一個新的檔案再存檔就正常了
    真的很感謝您^^

  8. 想請問Tsung 大,我是下載了別人的HTML模板作練習,但當我修改了.css檔後,原本沒問題的網頁突然變成整個偏左,請問這是哪裡出了問題呢?謝謝

    • 這種狀況通常就是編碼有修改過, 因為編碼不對, 有兩種可能.
      HTML 的話, 間距會跑掉. CSS 的話, 有可能會讀不到那個檔案. 🙂

  9. TO Tsung大,最後我改用DREAMWAVER開啟就沒問題了 :D,因為之前都是用筆記本直接開啟css檔案,不知道這兩者其中的差別,請大大指點一下,謝謝

  10. Tsung 大大:
    你好
    想請問你有關於MySQL資料庫無法正常顯示由PHP輸入進去的中文會變成?????
    如果是直接在資料庫中輸入中文卻可行
    已經試過將資料表、資料庫、PHP(記事本)編碼都設成UTF-8

  11. 你好
    感謝回應!
    可是我已經有在連接資料庫的PHP中 新增mysql_query('SET NAMES UTF8');
    但問題還是沒有解決....

    PS: 資料庫是與APP結合

  12. 你好,想在此請教各位高手,我想大陸工程師買了一套ASP的購物軟體網站源碼,並搭配Access的資料庫,想要自行將簡體轉為繁體作為自己的網站,但是遇到相當棘手的問題,首先是源碼在簡體的系統下運作完全正常,在沒有經過任何更改的情況下放在繁體的系統下無法運作,似乎是資料庫無法被開啟,依照本人的淺見,照理說網站的源碼應該是以文字的方式編排,並未經過任何的組譯的動作,理論上應該是呈現亂碼而已,運作應當是正常,是否是某些關鍵的頁面牽扯到文字的存取方式,例如UTF-8或是unicode等複雜的存取方式,高手是否可建議一種比較簡便的方式將簡體的源碼轉成繁體的源碼,感謝!

    • 這麼古老的東西,應該都還是 gb2312 / gbk 等等的,要作轉換除了文字外,DB 連線、schema 那些都要注意。

      不過我建議還是不要用這套了,要買也買新一點 ex: C# 之類的會比較好

  13. 您好:
    請問我打開php檔案 notepad++編輯器
    以big5顯示這樣 如果使用UTF-8就正常
    ?犖?詨

    用以上方法還是一樣無法解決
    這樣請問是檔案本身編碼問題還是網頁編碼問題
    如何處理
    謝謝