Re: [請益] utf-8顯示問題

看板PHP作者 (喵喵叫的蜜蜂貓)時間15年前 (2010/08/17 02:43), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串5/5 (看更多)
※ 引述《jikotw74 (Deep)》之銘言: : 小弟的經驗中 : 編碼有三個環節要注意 : 1.瀏覽器 : 就是<meta>標籤的charset屬性 : 會決定瀏覽器他用什麼什麼編碼開啟檔案 而且如果瀏覽器是IE的話,請注意META charset最好是在最前面第一行 <HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=utf-8"> 尤其絕對不可以擺在任何UTF8文字之後,不然IE會認不出來 就算你擺在第一行IE有時也會硬是不用,這原理我也不清楚... : 2.檔案本身 : 用進階點的文字編輯器開啟檔案 : 像我是用Notepad++ : 就可選擇編碼成 ANSI or UTF-8 : 這是最容易被遺忘的一項 : 如果你是用DW開啟新檔 : 預設是big5還是utf8開啟新檔 : 會讓檔案本身編碼不同(CS3前的經驗) 注意! PHP的UTF-8文件不容許有BOM 會顯示出錯甚至導致ob_start之類的function會失敗 所以,千萬別用Windows內建的記事本編輯 當頁面只有部分文字問號化的話,通常就是那一頁編碼沒存好 : 3.資料庫 : 資料庫還可注意兩部分 : a.存放資料的編碼 : 基本上就是資料庫校對 : b.挖出來的方式 : mysql_query("SET NAMES 'utf8'"); : 這樣就能確定挖出來的資料是UTF8編碼 : ※ 引述《linbob09 (累斃了)》之銘言: : : 這個問題在板上爬過文,但是都無解 : : 在內碼打了<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> : : 和這三個mysql_query('SET NAMES utf-8'); MySQL : MYSQL_QUERY("SET NAMES 'utf8'"); MySQLi: ->query("SET NAMES 'utf8'"); 我記得只要這一個就可以全部UTF8了,其他幾個SET不用設定 基本上...MySQL的命令盡量用""去包,這樣下命令比較方面 : :     mysql_query('SET CHARACTER_SET_CLIENT=utf-8'); : :     mysql_query('SET CHARACTER_SET_RESULTS=utf-8'); : : mysql的校對也是utf-_8_general_ci,而在mysql的瀏覽網頁也都可以正常顯示中文 : : 但是偏偏在我寫的網頁裡面,中文的部分都會變成??? : : 想請教各位到底是哪邊還要改呢?? : : ---------------------------------------------------------------------------- : : 我剛剛試了樓下那篇跟這篇的方法,可以顯示中文了,但是我把它改回原來的樣子的話, : : 就一樣可以顯示中文,有人可以告訴我這是差在哪邊嗎?? 我猜是你META放不夠前面所以IE沒用UTF8開啟 改正之後IE記住這個網頁要用UTF8開所以暫時正常一陣子 快取沒了之後又回復原狀 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.180.163

08/17 02:48, , 1F
那行<meta>不一定得在第一行 在<title>前面就夠了
08/17 02:48, 1F

08/17 02:48, , 2F
重點正是你提到的不可以擺在任何UTF8文字之後
08/17 02:48, 2F

08/17 02:49, , 3F
而<title>通常會是第一個出現非英文字的地方
08/17 02:49, 3F

08/17 09:31, , 4F
meta放註解就會有utf8了
08/17 09:31, 4F
文章代碼(AID): #1CQORYxm (PHP)
討論串 (同標題文章)
文章代碼(AID): #1CQORYxm (PHP)