一直以来遇到类型转换我经常会碰到问题,而且经常会很莫名不知道为什么会这样,后来经过查阅了大量资料以后,总结出ASP在类型转换时需要注意的一点:被转换的数据不能为空(Null)
我们必须在对变量进行类型转换前,先做一个是否为空的判断,因为很多时候读取出来的数据可能是空的,对于整形来说,默认的应该是0,而字符串类型的确是空的,所以这样就会出现
Microsoft VBScript 运行时错误错误 ‘800a000d‘
类型不匹配: ‘Cint‘
这样一来,碰到类型转换就不怕了,不过下面这种情况可能是你不太容易想到的,让我整整抓狂了一晚上了呵呵。
在使用了上面的方法以后,仍然存在问题,还是显示类型不匹配,这个又是为什么呢?我在转换前已经做了判断,还是不起作用,难道传输过来的数据不是空的吗?于是我用len()函数测试了一下,显示长度为8,晕~
明明是空的,为什么长度是8?于是直接到SQL Server企业管理器查询,找到了问题所在!原来数据库这个字段默认值为“8个空格”。。我靠!谁设计的数据库表结构,真是的,一点专业水准都没有!
问题结论:因为是8个空格,因此,转换成整形当然是“类型不匹配了”。
经过这次的经验,以后在字符串处理的时候,如果遇到某些看不见的字符难以处理的话,还是使用返回长度的函数看一下究竟有没有字符,然后再根据具体情况进行处理。
网上相关资料(不过现在的系统基本不存在此问题了):
在使用vbscript进行asp开发时,一些朋友会碰到以下类似的错误:
Microsoft VBScript 运行时错误 错误 ‘800a000d‘
类型不匹配: ‘page1‘
/main.asp,行 2541
错误原因:
该错误是因为在运行iis服务的windows 2003 server上安装了Internet Explorer 6 Service Pack 1 (KB832894)安全更新造成的。
解决方案:
要纠正该问题,请下载并安装Q831167.exe(http://www.microsoft.com/downloads/details.aspx?amp;amp;displaylang=en&familyid=254EB128-5053-48A7-8526-BD38215C74B2&displaylang=en),可以在Windows Server 2003机器上阅读微软知识库831167 http://support.microsoft.com/default.aspx?kbid=831167 了解一些相关信息。
.
- 上一篇:IIS5.0 支持中文文件名
- 下一篇:浅谈Apache的suexec