前幾天聽到一件很有趣的事, 解法也很有趣.
網頁現在都是採用 UTF-8 編碼, 但是在 IE 呈現時, 卻是出現亂碼(自動偵測語系).
聽到的解法: 用 iconv() 把語言轉成 Big5 就可以出現中文, 當下是有點哭笑不得~ XD
正確解法有下面幾種:
- 於 HTML head 指定此頁編碼為 UTF-8
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head> - PHP 送 Header 告訴瀏覽器這頁是 UTF-8 編碼
<?php
header("Content-Type:text/html; charset=utf-8");
?> - 設定 Apache 送出頁面預設語系 UTF-8 (比較不建議用此方法)
addDefaultCharset UTF-8
# 不過建議這行要包在 Directory 或 VirtualHost 內, 才不會影響到其它網頁.
<Directory "/var/*/blog">
addDefaultCharset UTF-8
</Directory>
<VirtualHost *>
addDefaultCharset UTF-8
</VirtualHost>
另外補充一個我很久之前解過的狀況
關於這個解法
必須把
否則偶些瀏覽器常會出現一片空白的畫面
你好 我是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));
我來幫Tsung大回答一下XD!回shumi桑,那是因為BOM的關係
如果你不知道什麼是BOM的話,可以看一下這篇小弟寫的文章= /=(羞)
http://liaosankai.pixnet.net/blog/post/24178179
http://doublekai.org/blog/?p=617
有附上BOM的介紹連結與非正式的解決方式(最好的解決方式就是用utf8的編碼去寫程式)
Tsung大不好意思,搶了你的工作
嗯嗯, META 指定 UTF-8 編碼, 要放在在 Title 之前, 這樣子瀏覽器才不會找錯編碼, 出現一片空白.
我記得之前有寫過畫面空白的解法, 好像有三種解法, 但是現在一時找不到.. Orz..
感謝提供~ 🙂
哈, 感謝您的幫忙~ 😛
BOM 的問題, 可以考慮先 打開 editplus(或其它編輯器), 去設定儲存時取消 BOM.
再將檔案用 editplus 打開, 然後存檔一次即可~ 🙂
註: 不好意思, 太久沒用 windows, 不知道有什麼編輯器可以用. Orz..
最近要寫Flash/PHP的程式...XP
所以說時常逼著我要在Windows下寫PHP...Orz
在Notpad++選單的"格式"就可以轉換了
在Windows寫PHP沒選好編輯器都會有一堆奇奇怪怪的問題出現
应该第一第二中方法都是用
我一般用 gb2312 编码,那样文件小
現在建議還是都轉 UTF-8 比較好耶~ 🙂
謝謝,解決了我2hr的問題!
終於解決這問題。給你一點回饋 ^^
預設瀏覽器是firefox3.5 檢視裡面的字元編碼預設是unicode(utf-8)
我資料庫編碼是utf-8 echo資料庫的資料時是正常的
但是單純echo "中文"的話 就會變亂碼
雖然可以把檢視的編碼改成正體中文後就可以正常顯示..不過還是很困擾是哪裡出了問題:(
你的檔案存檔是存成 Big5 了.
所以你顯示的是 Big5, 並不是 UTF-8.
檔案儲存那邊修改 UTF-8 即可.
我用的是pspad 我之前爬文已經有先去改過預設存檔的編碼
很蠢的是 我一直都是echo同一支程式 即使我另存新檔再echo還是一樣
不過剛剛看到您的提醒後 我試著開一個新的檔案再存檔就正常了
真的很感謝您^^
用記事本存成utf-8這樣就可以解決~網頁一半正常一半呈現亂碼的狀態了
我在php文件裏面添加
結果報錯,請問怎麼解決?Thanks
header() 送出之前, 前面不能有任何輸出的文字.
請把 header() 放在最前面.
謝謝你的文喔!! 幫到我的php網頁了 所以幫你點了廣告
非常感謝您!我沒把檔案修改成 UTF-8!所以怎麼試都沒效果!謝謝 🙂
想請問Tsung 大,我是下載了別人的HTML模板作練習,但當我修改了.css檔後,原本沒問題的網頁突然變成整個偏左,請問這是哪裡出了問題呢?謝謝
這種狀況通常就是編碼有修改過, 因為編碼不對, 有兩種可能.
HTML 的話, 間距會跑掉. CSS 的話, 有可能會讀不到那個檔案. 🙂
順道一提,我只有改了css裡的color
TO Tsung大,最後我改用DREAMWAVER開啟就沒問題了 :D,因為之前都是用筆記本直接開啟css檔案,不知道這兩者其中的差別,請大大指點一下,謝謝
應該是編碼問題, Dreamwave 存的編碼跟你的網頁編碼是一樣的.
太感謝您了 終於解決我困擾許久的問題。
1. download notepad++
2. assign 編碼為 utf-8
3. save your file by above 2 setting
好用 謝謝~
請教問題
utf-8出現兩次 但是查找檔案過程中找不出原因 有辦法解決嗎? 不知是不是簡體轉繁體網頁出現錯誤
網址? 另外, UTF-8 出現兩次有什麼影響嗎?
在IE呈現上會出現亂碼 並編碼為BIG5
是轉換中錯誤嗎?
有可能, 但是跟出現兩次 UTF-8 無關.
那要如何正確轉換編碼比較不會出錯呢?
謝謝指導
iconv.
Tsung 大大:
你好
想請問你有關於MySQL資料庫無法正常顯示由PHP輸入進去的中文會變成?????
如果是直接在資料庫中輸入中文卻可行
已經試過將資料表、資料庫、PHP(記事本)編碼都設成UTF-8
在 mysql_query() 類似的 Function, 執行 insert 前, 做下述:
mysql_query('SET NAMES UTF8');
你好
感謝回應!
可是我已經有在連接資料庫的PHP中 新增mysql_query('SET NAMES UTF8');
但問題還是沒有解決....
PS: 資料庫是與APP結合
在PHP的database connection後加上這行:
mysqli_set_charset ($db_conn,"utf8");
喔, db 連線的問題用這招~ 謝謝 🙂
請問我可以私下給你php您幫我看一下嗎?
因為我照您的設定都沒有用..
Email 給我看看? 但是我猜會不會是你自己 web server 那邊把吐出的編碼部分寫死了?
你好,想在此請教各位高手,我想大陸工程師買了一套ASP的購物軟體網站源碼,並搭配Access的資料庫,想要自行將簡體轉為繁體作為自己的網站,但是遇到相當棘手的問題,首先是源碼在簡體的系統下運作完全正常,在沒有經過任何更改的情況下放在繁體的系統下無法運作,似乎是資料庫無法被開啟,依照本人的淺見,照理說網站的源碼應該是以文字的方式編排,並未經過任何的組譯的動作,理論上應該是呈現亂碼而已,運作應當是正常,是否是某些關鍵的頁面牽扯到文字的存取方式,例如UTF-8或是unicode等複雜的存取方式,高手是否可建議一種比較簡便的方式將簡體的源碼轉成繁體的源碼,感謝!
這麼古老的東西,應該都還是 gb2312 / gbk 等等的,要作轉換除了文字外,DB 連線、schema 那些都要注意。
不過我建議還是不要用這套了,要買也買新一點 ex: C# 之類的會比較好
您好:
請問我打開php檔案 notepad++編輯器
以big5顯示這樣 如果使用UTF-8就正常
?犖?詨
用以上方法還是一樣無法解決
這樣請問是檔案本身編碼問題還是網頁編碼問題
如何處理
謝謝
檔案本身編碼問題,本身使用 UTF-8編碼,不要再用 Big5 顯示了~ 🙂