近期在开发中遇到几个与文件编码有关的小陷阱,写出来看看大家是否也遇到过,有没有更好的解决方法。
首先,项目中网站的web.config中已经定义使用UTF-8,各个ASPX页面也在meta中声明了使用UTF-8,以下是遇到的问题
1.UI开发人员使用中文版的dw,提供的css文件默认是gb2312,直接拿过来用时造成中文字体声明无效。如“font-family: "宋体";”,用IEDevToolBar看浏览器得到的“宋体”两个字是乱码。
解决方法:打开css文件,以utf-8另存
2.这个问题是今天遇到的,一段很简单的js,在ie7、firefox、opera下都正常,ie6下却不行。在ie6下打开页面另存,js文件也正常。后来发现js文件是gb2312编码,换成utf-8后问题解决。估计原因是js文件中包含中文注释,ie6解析时是乱码,影响了正常的解析,但是在ie6下打开页面另存,打开js文件文件时由于操作系统是简体中文的,显示确实正常的。上面说道的第一个问题应该也是这个原因。
3.用vs2005新建的aspx文件的编码是utf-8,.aspx.cs文件的编码却是gb2312。项目中的网站用的是Web Application模式,.aspx.cs文件都是编译发布,所以使用时没遇到什么问题。但是项目中.aspx.cs文件里有大量中文注释,一个新加入的同事用英文操作系统和英文vs2005,打开后中文注释全变成乱码了,即使在“选项”->“区域设置”里设置成“与 Microsoft Windows 相同”也不行,后来这位同事改用中文操作系统和vs完事。猜测应该可以通过设置他的操作系统的“区域和语言选项”解决该问题,由于没了试验环境,没有试过。