前几天做页面,排好的html页面复制到aspx页面上就是会出现差异,比如字体定义无效,基本的表现就是怎么改样式都没显示或只有某些浏览器正常,搞了半天才发现是编码问题,DW默认新建的文件编码是gb2312的,vs默认是utf-8的,时间原因也没重新排,就在web.config的Configuration节点下对这个页面单独设置了编码。
代码
<?xml version="1.0"?>
<configuration>
<system.web>
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>
</system.web>
<location path="RankList.aspx">
<system.web>
<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312"/>
</system.web>
</location>
</configuration>
出现修改样式无效时通常需要做下面的几步:
- 确认所修改的样式文件是否是当前页面的样式文件(多个环境的情况)
- 确认文件中的路径是否正确(可能手误多写或少写)
- 如果上面两点都确认没问题或只是一部分样式失效,基本可以确定是文件的编码问题
大家都知道使用“UTF-8”比“GB2312”跨平台的兼容性更好,却不一定知道文件的编码跟文件编码的申明不是一回事,以为只要申明了文件的编码类型就是改了文件的编码,导致很多时候只是简单的申明了文件的编码类型,而并没有真的修改文件编码类型,当浏览器以申明的编码类型去解析文件时,由于文件的实际编码跟申明不同,出现解析不正确的问题。
以上问题如何产生呢?
只修改了申明,没有保存与申明对应的文件编码类型
在不同文件间拷贝时,两个文件间的编码不一样
上面的问题只要再另存一份,选择跟申明一样的编码类型即可解决。
如果上面的方法都没有作用的话,可能就是编辑软件的问题啦,建议换个编辑器试试。
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。