网络编程
位置:首页>> 网络编程>> JavaScript>> 关于淘宝页面编码的疑惑

关于淘宝页面编码的疑惑

 来源:uedmagazine 发布时间:2009-12-04 12:54:00 

标签:淘宝,编码,gb2312,unicode

因为即将开始淘宝的项目,在前端方面必然要深入了解taobao ued规范,规范还是比较全的,只是对taobao.com的编码和字符集的选择有很多困惑,由于历史原因,taobao的页面编码是ASCII编码,字符集采用gb2312,这并无不妥,麻烦的仅仅是做代码开发的时候要抽出精力去对付复杂多元的字符集,比如在taobao首页是ASCII,页面的meta中指定的字符集是GB18030,但在window下,用firefox另存页面到本地后,发现meta字段的字符集变为gb2312,而且在ie中打开淘宝首页,浏览器认为的字符集是gb2312,但gb18030本身范围比gb2312要大,所以万一有越界字符出现,浏览器也会使用gb18030的字符集解释页面。




在纯粹的html中,这种相同编码字符集不同所带来的隐患通常会被越来越强大的A级浏览器hack掉,所以只要采用大致兼容的gb字符集,页面大概不会有异常。但当一个ascII码的html去引用utf编码的css或者js文件的时候,则必须指定引用文件的编码。但让人困惑的是,在taobao首页中却存在引用非标注编码的utf文件,而且不是个例,比如taobao首页尾部的tbra-fp.js,就没有指定其编码,

<script type="text/javascript" 
src="http://assets.taobaocdn.com/tbra/1.0/tbra-fp.js?
t=20090619.js"></script>

而这里的tbra-fp.js却是utf8的编码,还好这个文件中只有英文,而且没有ajax相关的代码,音位utf和ascII在英文范围是可以兼通的,这个文件还算比较正确的能和首页协同工作。而在首页最下方的几个沙箱引用的几个js文件则规范的标注了charset=gb2312,

<script type="text/javascript" 
src="http://cn2.adserver.yahoo.com/a?
f=2121060025&p=cntaobao&l=TBT1&c=r" charset="gb2312"></script>

且这几个沙箱引用的js也确实是ASCII编码的文件,因为js中含有中文字符,为了避免乱码则必须html编码保持一致。上述这种文件编码不统一的现象在首页还有几处存在,大概是bug吧。



我们说gb系列的字符集都是基于ASCII的扩展,只是各个字符集的扩展程度不一致,而且不同的字符集可能会有重叠的现象,毕竟每一种扩展都是各个国家或者地区单独行动,比如gb2312和big5为了能显示简体和繁体中文分别对ASCII作各自扩充,而这两种扩充得到的字符集是不兼容的。也就是说一个包含简体和繁体字的文件,不可能同时使用gb2312和big5来同时正确显示所有的汉字。而且gb2312的汉字个数本来就不多,所以采用gb2312来处理中文是有很多隐患的。如果遇到前端和后台的字符集不一致的情况,会很麻烦。在taobao首页的源码中就有很多这种情况:




而调试编码和字符集是需要不小的时间和精力的。如果正站统一采用unicode字符集的话,大概就不会出现各种各样编码不一造成的开发成本浪费和软件隐患了。嗨,这也是做全站架构的时候需要考虑的事情,做开发的话只需去遵循规范就好了,只是在开发的时候细心一点,保证文件编码和字符集保持一致即可,无他。

0
投稿

猜你喜欢

  • 我们提倡无论何时都尽可能地使用CSS,这样我们更容易取得成功.现在浏览器对CSS的支持已经非常好,肯定足以让你用来控制你的网页布局与排版.但
  • 八月的UCDChina书友会主题是“信息分类和方法”,在会场中的内容是不足以简单的概述的,而这次交流至少对于分类、属性、关键词与Tag的定义
  • BluePrint是一个非常成熟也非常流行的CSS框架,很多网站和wordpress基于Blueprint搭建前端结构。最近,bluepri
  • <title>:一个优质网页最重要的元素HTML 中的 <title> 元素用于在下列情况中提供一小段能够代表该网页
  • 这篇论坛文章主要介绍了Oracle数据库到SQL Server数据库主键的迁移过程,具体内容请参考下文。由于项目需要要将以前Oracle的数
  • 在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScr
  • 文章背景:某天,我的一个同事给我看了CSDN上面的一篇关于编程语言排行榜的文章,里面我看到VB还是排名很不错的,我就说,asp(vbscri
  • 问:怎样解决mysql连接过多的错误?答:系统不能连接数据库,关键要看两个数据:1、数据库系统允许的最大可连接数max_connection
  • 1.设置phpMyAdmin Language:Chinese simplified (zh-utf-8)MySQL 字符集:UTF-8 U
  • 之前有写过一篇浏览器的tab设计,这回说说网站的tab设计。一说到tab很自然地就想到了导航、信息架构。随着网站信息结构的复杂化,选择tab
  • 我们已经知道,null 没有任何的属性值,并且无法获取其实体(existence)值。所以 null.property 返回的是错误(err
  • 1.将以下代码加入到HEML的<body></body>之间<SCRIPT language=jav
  • 不论你做什么样的设计,色彩都是一个不容忽视的问题。色彩以一种“隐蔽”的方式传达的各种信息,这些信息会影响观看者的心理和感受,左右他们的判断和
  • SQL Server中事务日志的作用:持续记录数据库所有的事务和这些事务对数据库所做的修改;一旦数据库出现灾难事件,就需要事务日志来进行近期
  • iou33449999 文:一个链接 一个层 一个onMouseOver 一个onMouseOut然后这个层就会在onMouseOver这个
  • 长期以来我就有对几年来交互设计的心得进行总结整理的想法。回到中国来亲身体会到不少同行,主要是交互设计师和视觉设计师对于交互设计的困惑,以及其
  • ajax开发中, 常遇到下面的几种情况: 1 服务端需要返回一段普通文本给客户端 2 服务端需要返回一段HTML代码给客户端 3 服务端需要
  • JavaScript Dom编程 学习书籍选择JavaScript Dom编程学习,很多朋友无疑对如何选择入门的书籍,比较头疼。或许也是他们
  • 如何制作一个分页程序?确实,翻页程序可以相互借鉴,但具体到每一需求,还是有较大差别的。代码入下,供参考:<%language=&quo
  • 1、首先停止正在运行的MySQL进程 Linux下,运行 killall -TERM mysqld Windows下,如果写成服务的 可以运
手机版 网络编程 asp之家 www.aspxhome.com