VBS和页面中响应COM的事件

COM连接点事件回调机制及VBS、HTML实现
博客介绍了COM的CONNECTION POINT作为事件发生回调机制,给出了VBS中接收时间回调的方法示例,还展示了页面中使用该机制的HTML代码,包含函数定义和对象调用等内容。

COM的CONNECTION POINT可以成为一种事件发生回调机制。

VBS中接收时间回调的方法是

Function myobject_onadd( v1, v2 )

 MsgBox "add" & v1 & v2
End Function

Set Cnxn4 =  WScript.CreateObject( "ATLCom.ATL3" , "myobject_")

页面中使用的方法

<HTML>
<BODY ONLOAD="test()" LANGUAGE="VBS">


<SCRIPT LANGUAGE="VBS">

Function tt_onadd( v1, v2 )

 MsgBox "add" & v1 & v2
End Function


Function test()


 tt.Add 1, 2

End Function

</SCRIPT>
<SPAN ID="mySpan">SPAN</SPAN>

<object classid="clsid:1C6B8199-F7EA-4D8B-9F56-7F80ABAB16D0" id="tt">
</object>

</BODY>
</HTML>

感谢KEVIN给我提供的帮助。

<think>好的,我现在需要帮助用户解决如何在VBScript中正确输出中文的问题。用户提到在设置UTF-8编码后,ASP页面偶尔会出现乱码,特别是Response.Write输出的内容。我需要结合提供的引用信息,特别是引用[1],来找到解决方案。 首先,用户的问题涉及ASP页面VBScript,因此需要关注VBScript在ASP环境中的编码设置。根据引用[1],用户已经设置了CODEPAGE为65001,并且指定了Response.Charset为UTF-8,但仍有不定时乱码。这可能与服务器或文件的编码方式有关。 接下来,我需要确认正确的设置步骤。通常,ASP页面需要三个部分来确保UTF-8编码正确:页面声明、Response.Charset设置文件编码。引用[1]中提到使用<%@ language="VBScript" CODEPAGE="65001" %>Response.Charset="UTF-8",但可能文件本身保存的编码不是UTF-8,导致服务器解析时出错。因此,必须确保ASP文件以UTF-8 with BOM格式保存,特别是某些编辑器可能需要BOM头来正确识别编码。 另外,IIS服务器的配置也可能影响输出结果。检查IIS中的ASP设置,确保默认编码与页面设置一致。有时候,服务器全局配置会覆盖页面设置,导致不一致。此外,输出缓冲设置可能影响,使用Response.Flush可能导致部分内容提前发送,而编码头未正确设置,因此建议在输出前先设置所有头部信息。 还需要考虑数据库或其他外部数据源的编码。如果从数据库读取的数据不是UTF-8,可能在输出时产生乱码。确保数据库连接字符串指定了正确的编码,并在查询时进行转换。 最后,综合这些因素,给出用户明确的步骤:设置CODEPAGE、Response.Charset、文件保存为带BOM的UTF-8,检查IIS配置,避免输出缓冲问题,并确保数据源的编码正确。同时,可以建议使用代码示例来演示正确的设置方法,帮助用户实际操作。</think>在VBScript中正确输出中文需要确保编码设置完整,以下是具体解决方案: ### 一、核心设置步骤 1. **ASP页面声明**(必须放在首行) ```asp <%@ language="VBScript" CODEPAGE="65001" %> ``` 2. **响应头编码声明** ```asp <% Response.Charset = "UTF-8" %> ``` 3. **文件编码保存** - 使用记事本/VS Code保存文件时选择`UTF-8 with BOM`格式 - 避免使用无BOM的UTF-8(某些IIS版本会解析错误) ### 二、关键原理说明 $$编码一致性=文件存储编码+传输编码+解析编码$$ 需要同时满足: - 文件物理存储为UTF-8 - HTTP响应头声明UTF-8 - IIS元数据库编码匹配 ### 三、完整示例代码 ```asp <%@ language="VBScript" CODEPAGE="65001" %> <% Response.Charset = "UTF-8" %> <% Response.Write "你好,世界!" Response.Write Server.HTMLEncode("中文测试") %> ``` ### 四、服务器配置验证 1. 在IIS管理器中检查: - ASP模块的`responseEncoding``codePage`设置 - 网站级HTTP响应头是否强制指定其他编码 2. 通过Fiddler抓包验证: - 查看响应头`Content-Type: text/html; charset=utf-8` - 检查响应体字节是否符合UTF-8编码规范 ### 五、常见问题排查 | 现象 | 解决方案 | |-------|---------| | 部分字符显示问号 | 检查字体是否支持CJK字符集 | | 随机出现乱码 | 禁用输出缓冲`Response.Buffer = False`[^1] | | 数据库内容乱码 | 在SQL查询前执行`SET NAMES 'utf8'` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值