好几天没有更新博客了,大概看了一下这段时间内一个访客也没有.虽说光顾我的朋友不多但写还得继续写下去.
就快要毕业了,最近一直在为找工作做准备.时间安排的没有规律,所以也没什么好的东西与大家分享..记得以前做ASP.NET的时候遇到一个小问题.反正没什么写的就拿上来与大家分享一下..
做WEB开发就离不开CSS,离不开脚本编程,一个好的页面设计应该是样式文件与脚本代码是分离的,这样方便美工人员的设计,页面看起来又不凌乱;然后在页面中引入样式文件或脚本代码文件(引入样式文件用<link>,引入脚本代码文件用<script>).不知道其它人是不是这么做的,至少我是这么做的.
正文:
有一次我在做一个项目,需要一个客户端日历控件,我找了一个JS写的日历控件,像以往一样在页面中导入该JS脚本.然后运行,这时IE报错了(无效字符);因为这个日历控件以前我是用过的,所以肯定是没有问题的.那么问题在哪儿呢?像平时一样为了找出问题所在,我把日历控件文件里面的所有代码全部删除,改用alert("这是测试文件"); 我想这下应该不会出错了吧..没想到IE很不给面子,很不客气的告诉我(无效字符).我又改成了alert("This is Test Code");再运行.奇迹般的竟然不报错了.
我百思不得其解,为什么中文字符在里面就不可以呢?后来我下意识的查看了一下文件编码.发现 日历控件文件的编码是GB2313,而我ASPX页面的文件编码是UTF-8.我抱着试试看的心态将日历控件文件的编码改为UTF-8(和页面统一),里面的代码再改回 alert("这是测试文件"); 再运行,成功...不报错了..
总结:
aspx页面的文件编码的UTF8,而日历控件的编码是GB2312.编译器先是按照页面文件编码将aspx页面生成静态页面然后发送到客户端浏览器,这样客户端浏览器接收到的页面就是UTF8格式的.然后浏览再对接收到的页面的HTML代码进行解释并执行,当执行到须要导入外部文件的代码的时候(如<link>用做导入一CSS样式文件,<script>可导入一个外部JS文件),浏览器就会按照页面文件的编码对即将导入的文件进行解码.例如页面的编码是UTF-8,即将导入的外部文件编码是GB2313,那么不管即将导入的文件是什么编码都将按照UTF-8进行解码;因为编码不同解码后的代码肯定是乱码.如果是JS脚本的话,那么浏览器就会把解码出来的代码传给脚本引擎执行.因为是乱码,所以传到脚本引擎的代码就不是我们所预想的代码了.而如果是英文字符的话,因为英文字符在哪种字符编码里面都能被正确解释出来的(我也不知道为什么,嘿嘿).所以即使是文件编码不同.英文字符串一样可以被正确解码,这就解释了为什么中文字符报错,而英文字符串就不报错的原因..
其实关于字符编码一直是程序所头疼的问题,洽洽我对这又不了解,一直想找机会好好了解一下,总想着看,可是一直没看,总忘..呵呵...
|
请发表评论