新闻资讯
记录首创点滴进步 见证远行
我们一直紧跟时代前沿,聚焦行业实时动态,发布公司最新资讯,欢迎您的关注

轻松解决网站乱码现象

日期:2013-05-03发布:首创网络浏览:793次

    轻松解决网站乱码现象。相信各位同行或多或少都会碰到过乱码的问题。从来没有?相信我,只是时候未到,在这行混,迟早会碰到的。当然,如果你对各类编码非常了解,对浏览器脾气摸得很清楚了,你可以避开或者快速解决此类问题。希望这篇文章对你有所帮助。 一

    本文关键字:轻松,解决,网站,乱码,现象,轻松,解决,网站,

  轻松解决网站乱码现象。相信各位同行或多或少都会碰到过乱码的问题。从来没有?相信我,只是时候未到,在这行混,迟早会碰到的。当然,如果你对各类编码非常了解,对浏览器脾气摸得很清楚了,你可以避开或者快速解决此类问题。希望这篇文章对你有所帮助。

  一、为什么会出现乱码?

  在计算机中,我们储存的信息都是用二进制码表示的。我们文字和符号用的二进制代码的互相转换,就是编码,转换需要一种规则,就是字符集(charset),我们常用的字符集例如:ascii,gb2312,unicode。

  不同的字符集所存储的内容不同,比如“太平洋”三个字采用gb2312对应的值为441138294983,utf-8对应为E5A4AAE5B9B3E6B48B,这样,当一个gb2312的文件嵌入一个utf-8的文件的时候,问题就来了。

  二、ANSI,Unicode,UTF-8,Encode,Charset,HTML实体…我快疯了

  疯完了没,没昏就行了,别着急,听我一一道来。其实这只是同一样东西在不同场合的应用。

  A.ANSI,Unicode,UTF-8

  这几个归为一类,它们是文件编码。

  ANSI指当地编码,比如在大陆它指GB2312,在台湾它指GBK(Win中记事本保存文件的时候的默认选项就是它)。

  Unicode是一个通用字符集,它是一个编码标准,这个和GB2312是对应的,但因为字符集过大,Unicode有它的特殊性,在不同应用场合,有不同的具体实现手法,比如应用于互联网传输,采用的存储与传送格式是UTF-8,Windows应用UTF-16,Linux应用UTF-32。

  B.Charset

  HTML中的Charset,CSS中的@charset,XML中的encoding等,这几个归为一类。

  它们是告诉浏览器如何解码。比如psd后缀是告诉系统这是Photoshop源文件,同样charset设为gb2312是告诉浏览器这是一个简体中文的网页。

  C.Encode

  Encode和encodeURI,encodeURIComponent归为一类。

  这在下一节中进行比较详细的介绍。当浏览器提交数据给服务器时,特殊字符中文一般浏览器会自动编码,但存在部分保留字符,比如”#/”等,这时候需要encode等进行转换。

  D.HTML实体

  当网页中需要插入某些特殊字符时,需要用到HTML实体,比如插入<,可以使用<或者实体编码<。

  三、JavascriptURI编码/解码

  A.为什么需要URI编码?

  通常来说,之所以URI需要进行编码,是因为URI中有些字符可能会引起歧义或者有隐私的数据。

  B.编码与解码的函数?

  JS对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

  C.如何选择?

  首先,范围不同。Escape不能编码的字符有:@*/+;encodeURI:!@#$&*()=:/;?+‘;encodeURIComponent:!*()。

  其次,编码类型不同。encodeURI、encodeURIComponent采用utf-8进行编码;而Escape采用系统编码。

  所以,怎么选择?例如内容中要存在URI标识,则用encodeURI,如果想把”#,/”也要编码用escape或encodeURIComponent。

  四、Ajax加载的文件中不能用中文?

  这一直是让开发人员很头疼的问题之一,也是常见的编码问题,原因很简单,你非得拿羊城通往ATM上插,结果当然是读不出来或者读错。编码问题也是一样,通常出错的情况是,文档编码是GB2312,而浏览器以UTF-8(Ajax默认解码方式)来解码,自然乱码。

  怎么解决呢?

  1、文档采用UTF-8编码,不会产生任何问题。

  2、如果不能用UTF-8,XML文档可以指定它的Encoding,JS文件和JSON数据目前没有好的解决办法。

  五、GB2312,UTF-8都可以显示中文,如何选择?

  可以显示中文的编码有GB2312、GBK、GB18030、Unicode。前三个保持向后兼容,比如“邯郸网站建设”这几个字在这几个编码规则中内码是一样的。它们的不同之处在于字符集不同,GB2312只包括简体中文,GBK还包括繁体,GB18030再加入了少数民族语言,比如藏文。那如果显示简体中文可以任意选择?据我目前测试了解,应该都是可以的,至于速度上是否有差异,还未深究,但GB2312肯定更为通用,而且据我测试已经包含了相当部分繁体。至于Unicode,应用在网页中的UTF-8,中文一般需要占据3个字节(前三种2个字节),所以当中文较多的网页用UTF-8文件将变得更大(我们公司大部分网页4%左右)。

  六、UTF-8、UTF-16、UTF-32什么区别?

  Unicode所做的是为每个字符定义了一个相应的数字表示。比如,“a“的Unicode值是0×0061,“一”的Unicde值是0×4E00,这是最简单的情况,每个字符用2个字节表示。Unicode定义了百万个以上的字符,如果将所有的字符用统一的格式表示,需要的是4个字节。“a“的Unicode表示就会变成0×00000061,而“一“的Unicode值是0×00004E00。实际上,这就是UTF32,Linux操作系统上所使用的Unicode方案。但是,仔细分析可以发现,其实绝大部分字符只使用2个字节就可以表示了。英文的Unicode范围是0×0000-0×007F,中文的Unicode范围是0×4E00-0×9F**,真正需要扩展到4个字节来表示的字符少之又少,所以有些系统直接使用2个字节来表示Unicode。比如Windows系统上,Unicode就是两个字节的。对于那些需要4个字节才能表示的字符,使用一种代理的手法来扩展(其实就是在低两个字节上做一个标记,表示这是一个代理,需要连接上随后的两个字节,才能组成一个字符)。这样的好处是大量的节约了存取空间,也提高了处理的速度。这种Unicode表示方法就是UTF16。一般在Windows平台上,提到Unicode,那就是指UTF16了。而UTF-8更有意思,它的字节数1-4个不等,如果纯英文的应用环境,自然用它更加节省。

  七、CSS、JS的编码可以和HTML不一致吗?

  可以。但最好在引用时手动设置Charset,值得注意的是IE、FF默认根据当前页面编码,而Chrome默认是UTF-8。

    欢迎大家阅读浏览,部分内容来源于网络,如有侵权,请联系我们删除!

+ 查看更多我们的客户 / Our client

    24小时技术支持
    18931045623
    在线客服

首创简介

    首创网络成立于2012年,是一家专业的品牌网站设计和网络营销推广公司,服务领域涵盖网站设计、市场策划、企业画册及VI视觉设计、网站域名空间等领域,公司拥有一批高素质人才,着力打造品牌网站设计制作和网上营销策略执行两大优势。

    十年来,凭借对市场趋势敏锐的洞察,和对消费者、企业形态深刻的理解,我们服务的已遍及京津冀、长三角、珠三角等领域,行业覆盖政府机构、企事业单位、无线通讯、环保、电子、医药、交通、园林、地产等行业,诸多知名企业,如广州京信集团、广东联通广州分公司、搜狐家居广州站、搜狐家居邯郸站等,都鉴证了首创设计公司的品牌设计思想与能力,首创设计公司也与诸多企业勃的市场经济中互促共生。

在线客服


  • 扫描加微信

  • 扫描加QQ

  • 扫描浏览手机版
首创网络邯郸公司
邯郸公司
服务热线:0310-4559740 / 18931045623  公司地址:邯郸市丛台区颐高广场B座13层1304室  客户接待:邯郸市陵园路669号康桥国际B06