做网站少不了牵扯到编码的问题,这次做了个简单的系统,对于编码方式做了个简单的总结。
编码方式区别:
经常用到的编码方式 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(统一码、万国码、单一码、标准万国码)是计算机科学领域里的一项业界标准,用以统一地体现和处理世界上大部分的文字系统,并为其编码。