轉載自: http://blog.csdn.net/eightwhells/article/details/13350071
做網站少不了牽扯到編碼的問題,這次做了個簡單的系統,對於編碼方式做了個簡單的總結。
編碼方式區別:
經常用到的編碼方式 GB2312(EUC-CN) UTF-8 ASCII GBK unicode
其餘還有臺灣的 BIG5 日本的JIS 兼容GBK和GB2312的GB18030 單字節編碼的ISO-8859-1等等
在編輯網頁的時候最經常用到的字符集有 GB2312(GBK是GB2312的超集) 和 UTF-8
1·亂碼原因:
網頁上經常出現的亂碼現象基本都是編碼方式出錯造成的,數據庫編碼方式和頁面申明編碼方式不一樣,或者這兩者的編碼設置與服務器默認的全局編碼方式不一樣。例如:UTF-8爲3個字節表示一個漢字,而普通的GB2312或BIG5是兩個。
解決的方法:
主要是保持網頁頁面的編碼方式和數據庫的編碼方式以及服務器的編碼方式(服務器的這個設置,涉及的比較少)保持一致。
另外:
*由於IE解析網頁編碼時以HTML內的標籤優先,而後纔是HTTP header內的訊息,而mozilla(firefox)系列的瀏覽器則剛剛相反
網頁文件的<head></head>標籤中一定要把字符定義<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 放在<title> 之前。(這一段摘至網絡)
2·中文名稱文件無法操作
php操作文件的時候比如(readfile),如果頁面編碼方式是UTF-8,則中文文件名的文件無法打開。
前面說過UTF-8爲3個字節表示一個漢字,而普通的GB2312或BIG5是兩個,而windows系統內的txt文檔是默認ANSI編碼的,
而ANSI編碼也是2個字節來表示一個漢字。(GB2312, BIG5, JIS,這些使用 2 個字節來代表一個字符的各種漢字延伸編碼方式,稱爲 ANSI 編碼,簡體中文系統下,ANSI 編碼代表 GB2312 編碼)
解決方法:
1·將頁面的編碼方式轉換爲gb2312;
2·用iconv轉碼函數將文件的路徑信息轉換爲gb2312的編碼方式;
常用的兩種編碼方式的介紹(蒐集得到的):
GB2312收錄有近7000的漢字,GB2312字符集中除常用簡體漢字字符外還包括希臘字母、日文平假名及片假名字母、俄語西裏爾字母等字符,未收錄繁體中文漢字和一些生僻字。
UTF-8是UNICODE的一種變長字符編碼又稱萬國碼,它可以用來表示Unicode標準中的任何字符,且其編碼中的第一個字節仍與ASCII兼容。
Unicode(統一碼、萬國碼、單一碼、標準萬國碼)是計算機科學領域裏的一項業界標準,用以統一地體現和處理世界上大部分的文字系統,併爲其編碼。