本文轉載自:http://www.cnblogs.com/rickyNote/archive/2012/04/09/2438704.htmlphp
一.HTML頁面轉UTF-8編碼問題
1.在head後,title前加入一行:html
順序不能錯,必定要在mysql
顯示的標題有多是亂碼!nginx
2.html文件編碼問題:sql
點擊編輯器的菜單:「文件」->「另存爲」,能夠看到當前文件的編碼,確保文件編碼爲:UTF-8,
若是是ANSI,須要將編碼改爲:UTF-8。
3.HTML文件頭BOM問題:
將文件從其餘的編碼轉換成UTF-8編碼時,有時候會在文件的最開始加上一個BOM標籤,
在個BOM標籤可能會致使瀏覽器在顯示中文的時候出現亂碼。
刪除這個BOM標籤的方法:
1.能夠用Dreamweaver打開文件,並從新保存,便可以去除BOM標籤!
2.能夠用EditPlus打開文件,並在菜單「首選項」->「文件」->"UTF-8標識",設置爲:「老是刪除簽名」,
而後保存文件,便可以去除BOM標籤!
4.WEB服務器UTF-8編碼問題:
若是你按以上所列的步驟作了,仍是有中文亂碼問題,
請檢查你的所使用的WEB服務器的編碼問題
若是你使用的是Apache,請將配置文件裏的:charset 設成:utf-8(這裏僅列出方法,具體格式請參考apache的配置文件)
若是你使用的是Nginx,請將nginx.conf裏的:charset 設成 utf-8,
具體找到 "charset gb2312;"或者相似的語句,改爲:「charset utf-8;」。
二.PHP頁面轉UTF-8編碼問題
1.在代碼開始出加入一行:
header("Content-Type: text/html;charset=utf-8");數據庫
2.PHP文件編碼問題apache
點擊編輯器的菜單:「文件」->「另存爲」,能夠看到當前文件的編碼,確保文件編碼爲:UTF-8,
若是是ANSI,須要將編碼改爲:UTF-8。
3.PHP文件頭BOM問題:
PHP文件必定不能夠有BOM標籤
不然,會出現session不能使用的狀況,並有相似的提示:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
這是由於,在執行session_start() 的時候,整個頁面不能有輸出,可是當因爲前PHP頁面存在BOM標籤,
PHP把這個BOM標籤當成是輸出了,因此就出錯了!
因此PHP頁面必定要刪除BOM標籤
刪除這個BOM標籤的方法:
1.能夠用Dreamweaver打開文件,並從新保存,便可以去除BOM標籤!
2.能夠用EditPlus打開文件,並在菜單「首選項」->「文件」->"UTF-8標識",設置爲:「老是刪除簽名」,
而後保存文件,便可以去除BOM標籤!
4.PHP以附件形式保存文件的時候,UTF-8編碼問題:
PHP以附件形式保存文件,文件名必須是GB2312編碼,
不然,若是文件名中有中文的話,將是顯示亂碼:
若是你的PHP自己是UTF-8編碼格式的文件,
須要將文件名變量由UTF-8轉成GB2312:
iconv("UTF-8", "GB2312", "$filename");
5.截斷顯示文章標題時,出現亂碼或者「?」問號的問題:
通常文章標題很長的時候,會顯示一部分標題,會對文章標題進行截斷,
因爲一個UTF-8編碼格式的中文字符會佔用3個字符寬度,
截取標題的時候,有時會只截取到一箇中文字符的1個字符或2字符寬度,
沒截取完整,將出現亂碼或「?」問號的狀況,
用下面的函數截取標題,就不會有問題:瀏覽器
三.MYSQL數據庫使用UTF-8編碼的問題服務器
1.用phpmyadmin建立數據庫和數據表
建立數據庫的時候,請將「整理」設置爲:「utf8_general_ci」
或執行語句:cookie
建立數據表的時候:若是是該字段是存放中文的話,則須要將「整理」設置爲:「utf8_general_ci」,
若是該字段是存放英文或數字的話,默認就能夠了。
相應的SQL語句,例如:
2.用PHP讀寫數據庫
在鏈接數據庫以後:
[hide]$connection = mysql_connect($host_name, $host_user, $host_pass);
加入兩行:
mysql_query("set character set 'utf8'");//讀庫
mysql_query("set names 'utf8'");//寫庫
就能夠正常的讀寫MYSQL數據庫了。
四.JS相關的UTF-8編碼問題
1.JS讀Cookie的中文亂碼問題
PHP寫cookie的時候須要將中文字符進行escape編碼,
不然JS讀到cookie中的中文字符將是亂碼。
但php自己沒有escape函數,咱們新寫一個escape函數:
JS讀cookie的時候,用unescape解碼,
而後就解決cookie中有中文亂碼的問題了。
2.外部JS文件UTF-8編碼問題
當一個HTML頁面或則PHP頁面包含一個外部的JS文件時,
若是HTML頁面或則PHP頁面是UTF-8編碼格式的文件,
外部的JS文件一樣要轉成UTF-8的文件,
不然將出現,沒有包含不成功,調用函數時沒有反應的狀況。
點擊編輯器的菜單:「文件」->「另存爲」,能夠看到當前文件的編碼,確保文件編碼爲:UTF-8,
若是是ANSI,須要將編碼改爲:UTF-8。
五.FLASH相關的UTF-8編碼問題
FLASH內部對全部字符串,默認都是以UTF-8處理 1.FLASH讀文普通本文件(txt,html) 要將文本文件的編碼存爲UTF-8 點擊編輯器的菜單:「文件」->「另存爲」,能夠看到當前文件的編碼,確保文件編碼爲:UTF-8, 若是是ANSI,須要將編碼改爲:UTF-8。 2.FLASH讀XML文件 要將XML文件的編碼存爲UTF-8 點擊編輯器的菜單:「文件」->「另存爲」,能夠看到當前文件的編碼,確保文件編碼爲:UTF-8, 若是是ANSI,須要將編碼改爲:UTF-8。 在XML第1行寫: 3.FLASH讀PHP返回數據 若是PHP編碼自己是UTF-8的,直接echo就能夠了 若是PHP編碼自己是GB2312的,能夠將PHP轉存成UTF-8編碼格式的文件,直接echo就能夠了若是PHP編碼自己是GB2312的,並且不容許改文件的編碼格式, 用下面的語句將字符串轉換成UTF-8的編碼格式 $new_str = iconv("GB2312", "UTF-8", "$str"); 再echo就能夠了 4.FLASH讀數據庫(MYSQL)的數據 FLASH要經過PHP讀取數據庫中的數據 PHP自己的編碼不重要,關鍵是若是數據庫的編碼是GB2312的話, 須要用下面的語句將字符串轉換成UTF-8的編碼格式 $new_str = iconv("GB2312", "UTF-8", "$str"); 5.FLASH經過PHP寫數據 一句話,FLASH傳過來的字符串是UTF-8格式的, 要轉換成相應的編碼格式,再操做(寫文件、寫數據庫、直接顯示等等) 仍是用iconv函數轉換 6.FLASH使用本地編碼(理論上不推薦使用) 若是想讓FLASH不使用UTF-8編碼,而是使用本地編碼 對於中國大陸地區而言,本地編碼是GB2312或GBK AS程序內,能夠添加如下代碼: System.useCodepage = true; 那麼FLASH內全部字符都是使用GB2312的編碼了 全部導入到FLASH或者從FLASH導出的數據,都應該作相應的編碼轉換 由於使用本地編碼,會形成使用繁體中文地區的用戶產生亂碼,因此不推薦使用