網頁(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>


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Programming。將永久鏈結加入書籤。

網頁(UTF-8) 於 瀏覽器 出現亂碼解法 有 43 則回應

  1. Dylan 說道:

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



    關於這個解法

    必須把放在meta之後<br /> 否則偶些瀏覽器常會出現一片空白的畫面

  2. shumi 說道:

    你好 我是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. SANKAI 說道:

    我來幫Tsung大回答一下XD!回shumi桑,那是因為BOM的關係
    如果你不知道什麼是BOM的話,可以看一下這篇小弟寫的文章= /=(羞)
    http://liaosankai.pixnet.net/blog/post/24178179
    http://doublekai.org/blog/?p=617
    有附上BOM的介紹連結與非正式的解決方式(最好的解決方式就是用utf8的編碼去寫程式)
    Tsung大不好意思,搶了你的工作

  4. Tsung 說道:

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

  5. Tsung 說道:

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

  6. renn999 說道:

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

  7. 华晨 說道:

    应该第一第二中方法都是用
    我一般用 gb2312 编码,那样文件小

  8. Tsung 說道:

    現在建議還是都轉 UTF-8 比較好耶~ 🙂

  9. happy 說道:

    謝謝,解決了我2hr的問題!

  10. ans 說道:

    終於解決這問題。給你一點回饋 ^^

  11. 小麥 說道:

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

  12. Tsung 說道:

    你的檔案存檔是存成 Big5 了.
    所以你顯示的是 Big5, 並不是 UTF-8.
    檔案儲存那邊修改 UTF-8 即可.

  13. 小麥 說道:

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

  14. 芽芽婷 說道:

    用記事本存成utf-8這樣就可以解決~網頁一半正常一半呈現亂碼的狀態了

  15. kivin 說道:

    我在php文件裏面添加

    結果報錯,請問怎麼解決?Thanks

  16. Tsung 說道:

    header() 送出之前, 前面不能有任何輸出的文字.
    請把 header() 放在最前面.

  17. Summer 說道:

    謝謝你的文喔!! 幫到我的php網頁了 所以幫你點了廣告

  18. JM 說道:

    非常感謝您!我沒把檔案修改成 UTF-8!所以怎麼試都沒效果!謝謝 🙂

  19. JM 說道:

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

    • Tsung 說道:

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

  20. JM 說道:

    順道一提,我只有改了css裡的color

  21. JM 說道:

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

  22. Dennis Cheng 說道:

    太感謝您了 終於解決我困擾許久的問題。

  23. fcu1928 說道:

    1. download notepad++
    2. assign 編碼為 utf-8
    3. save your file by above 2 setting

  24. Kevin 說道:

    好用 謝謝~

  25. 你好 說道:

    請教問題

    utf-8出現兩次 但是查找檔案過程中找不出原因 有辦法解決嗎? 不知是不是簡體轉繁體網頁出現錯誤

  26. 你好 說道:

    在IE呈現上會出現亂碼 並編碼為BIG5
    是轉換中錯誤嗎?

  27. allenwu 說道:

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

  28. allenwu 說道:

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

    PS: 資料庫是與APP結合

  29. polochen 說道:

    在PHP的database connection後加上這行:

    mysqli_set_charset ($db_conn,"utf8");

  30. Icery 說道:

    請問我可以私下給你php您幫我看一下嗎?
    因為我照您的設定都沒有用..

  31. Feynman 說道:

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

    • Tsung 說道:

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

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

  32. 柚子 說道:

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

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

發表迴響