| |
| |
| |
 |
VS.NET 2005不认无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)提醒您: 本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)! |
|
|
|
|
|
|