一级棒(Eachfun)
一级棒 - 编程园地 - C#学习心得 - VS.NET 2005不认无BOM的utf-8网页
RSS订阅
VS.NET 2005不认无BOM的utf-8网页
发表时间:2008-04-23 01:05:18 关键词:Visual,Studio,VS,BOM,utf-8

本人擅长于写程序,美工不是我的特长,
所以,网页都是同事做的,我负责把内容提取出来与模板合并。
最后生成目标网页写入磁盘供用户浏览。

我长期以来一直是用ASP写的程序,
近来在研究ASP.NET,由于同时有VB和C++的基础,学C#不在话下,
从ASP转型到ASP.NET只是我的事,与我的同事无关。
所以,我可以放心地把程序提升到ASP.NET,而我的同事可以继续坚持他的习惯。
不过,今天的测试却让我大跌眼镜。

我用VS.net2005写了个“byvs.htm”,
用DreamWeaver写了个“budw.htm”,
网页本身没啥内容,就几个字而已。
结果,DreamWeaver可以打开两个htm文件,显示都正常,
但是VS.NET2005只能打开自己的文件,对于“bydw.htm”,则显示乱码,

问题还没有到此为止,
我直接把内容读出来并送到客户端,居然一切正常,
代码如下:
string s;
s = System.IO.File.ReadAllText(Server.MapPath("~/Template/byvs.htm"));
//s = System.IO.File.ReadAllText(Server.MapPath("~/Template/bydw.htm"));
Response.Write(s);
Response.End();
无论是“byvs.htm”还是“bydw.htm”都能正常读取,也能正常浏览。
把其中第二行改为“s = System.IO.File.ReadAllText(..., Encoding.UTF8);”也正常。

查看两个文件的编码,也的确都是utf-8编码。
也就是说,通过分析可以判断,两个文件都是utf-8编码,
都能正常打开,(无论是记事本还是IE),
就是在VS.net2005中打开这个bydw.htm文件显示有问题。

网上搜了一下,只发现有人提出DreamWeaver打开VS的文件出乱码的,
在我这儿居然发生了相反的现象。
后来就怀疑是否BOM在作怪。
我试着写入BOM,果然问题解决。

结论:DreamWeaver同时支持有BOM和无BOM的utf-8网页,
Visual Studio.net 2005只支持有BOM的,如果没有BOM,估计是当成ansi了。

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2008 Eachfun.Com, All Rights Reserved 一级棒网络
苏ICP备05080156号
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!