惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
V
V2EX
博客园_首页
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
H
Help Net Security
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Blog — PlanetScale
Blog — PlanetScale
W
WeLiveSecurity
云风的 BLOG
云风的 BLOG
D
Docker
Security Archives - TechRepublic
Security Archives - TechRepublic
Help Net Security
Help Net Security
N
News and Events Feed by Topic
Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
博客园 - 三生石上(FineUI控件)
aimingoo的专栏
aimingoo的专栏
Hacker News: Ask HN
Hacker News: Ask HN
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy International News Feed
T
Troy Hunt's Blog
T
Tenable Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Recorded Future
Recorded Future
F
Fortinet All Blogs
D
DataBreaches.Net
B
Blog
T
Threat Research - Cisco Blogs
MyScale Blog
MyScale Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
The GitHub Blog
The GitHub Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence

博客园 - 游民一族

VR发展的最大障碍在于内容? 无法修改Form尺寸的解决方法 [ATL/ActiveX]全屏显示ActiveX控件 近期业余生活以及计划(持续更新) 远程控制之屏幕截取 小结 [C#]mouse_event模拟点击时坐标参数无效?! Javascript: IE中命名函数直接量的Bug? - 游民一族 - 博客园 ASP.NET AJAX Client Library: 更繁?更简? ASP.NET动态创建控件之绝境求生 喜讯,公司换宽屏液晶显示器了 分享:基于UDP协议实现可靠的数据传输 C#线程:只要任何一个线程在运行,程序就不退出?! 基于Web的仿WF工作流设计器 [ASP.NET]ASP.NET 2.0中Membership的UserID问题 [ASP.NET AJAX]谨记给UpdatePanel中动态添加的控件赋ID [ASP.NET]如何灵活定制皮肤/页面:布局设计器介绍 过滤ASP.NET输出HTML中的无用空格 在JavaScript中实现命名空间 [C#]NHibernate处理多帐套问题
VS 2005 BUG: 新增JScript文件编码问题引起乱码?
游民一族 · 2007-02-06 · via 博客园 - 游民一族

测试环境:WIN 2003 + VS2005(无SP1) + IE7,其他环境不详

在编写布局编辑器的过程中遇到了一个很奇怪的问题,着实让我郁闷了好几个小时,最后在同事(以前遇到过类似问题)的提醒下才发现是咋回事,个人认为这应该是VS 2005的一个BUG,至少说是一个不应该的疏忽!

如下图所示,我建立一个解决方案,包含两个工程[WebSite]WebSite1和[Web Control Library]EncodingTest:

EncodingTest中包含一个控件WebCustomControl1,然后在EncodingTest中(通过Add New Item对话框)添加一个JScript文件Test1.js,在WebSite1中添加一个JScript文件Test2.js,二者内容如下:

// Test1.js
alert("alert 中文 from class library");// Test2.js
alert("alert 中文 from website");


然后将Test1.js以WebResource的方式嵌入到该assembly中,并注册到客户端,如下:

 1 [assembly: WebResource("EncodingTest.Test1.js""text/javascript")]
 2 namespace EncodingTest
 3 {
 4     [DefaultProperty("Text")]
 5     [ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
 6     public class WebCustomControl1 : WebControl
 7     {
 8         protected override void OnPreRender(EventArgs e)
 9         {
10             Page.ClientScript.RegisterClientScriptResource(typeof(WebCustomControl1),
11                 "EncodingTest.Test1.js");
12         }
13         // 
14     }
15     // 
16 }


在WebSite1的Default.aspx文件中插入如下代码:

<form id="form1" runat="server">
<div>
    
<cc1:WebCustomControl1 ID="WebCustomControl1_1" runat="server" Text="Test" />
</div>
<script language="javascript" src="Test2.js"></script>
</form>


好了,运行一下WebSite1,如果照理说结果很简单,就是两个alert先后输出“alert("alert 中文 from class library"); ”和“alert 中文 from website ”罢了,但是诡异的事情就此发生,弹出的两个对话框显示如下:

从本文的标题可以看出发生该问题的缘由:编码。经过检查,惊讶地发现,在WebSite1中添加的JScript编码方式默认是UTF-8的,而在EncodingTest添加的JScript编码方式却默认是ANSI的,这就是造成以上现象的罪魁祸首,无语ING……

其实以上的问题还是小事,在布局编辑器编写过程中问题更为严重,由于(ANSI编码方式的那个)JScript文件中的中文注释,居然还可能引起其中JS代码执行出错,不过这个问题IE 6.0以及以下版本才会出现,我机器上用的是IE 7和Firefox 2,一开始还没注意到,直到在同事机器上测试才发现!(不过我现在怎么也复现不了,不知道漏了什么地方)

P.S. 前文提到,我同事以前也遇到这个问题,不过那时他用了其他的文本编辑器才导致出现问题,我却是始终在VS 2005开发环境中,居然也出现问题,实在是不该啊!

Update:2007-02-06 13:48
1. 我猜测可能是工程项目模板中模板文件有问题(编码不统一???)导致的!


posted on 2007-02-06 12:15  游民一族  阅读(7125)  评论()    收藏  举报