关于在UTF-8编码下使用ASPUPLOAD组件时遇到的问题

在UTF-8编码下使用ASPUPLOAD组件时遇到了三个问题.
第一,aspupload组件在UTF-8编码的文件中上传文件时保存路径中不能包含中文.
第二,在使用aspupload组件处理的表单中包含的多选列表框中提交的多个值只能取到第一个.
第三,提交的文本框中通过aspupload的form集合获取来的值都是乱码.
查找了aspupload组件的用户手册和网上的资源针对前两个问题都没有有效的解决办法,经过仔细测试和研究,总结出三点需要注意的地方,以解决前三个问题.

第一点,在UTF-8的也面头部加上下面这三行代码,以声明此文档的编码类型为utf-8的.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%> 
<%Response.Charset="utf-8"%>

此外还要设置<head>标签内的
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
用来告诉客户端浏览器用UTF-8编码方式来读取这个页面.
如果这个页面上有使用aspupload组件处理的表单的话,还要设置aspupload组件对表单提交的数据进行utf-8编码转换.在实例化组件后设置组件的CodePage 属性.
Upload.CodePage = 65001
另外再保存这个页面的时候别忘了要 以utf-8编码保存.
经过这些设置可以解决第三个问题.

第二点,aspupload组件处理表单中的form集合的数据时,对列表框内提交的多项数据只取第一个.经过测试还发现了一个有趣的现象,就是如果列表框中没有被选中的项目被提交时,aspupload 的 form集合中将忽略表单中的这个列表控件,而其他的控件则不同,比如文本框即使为空也不忽略.如果列表控件中的数据有多个项目被选中的话,在form集合中则是显示出这个多个同名的列表控件名,每个列表控件名对应一个选项值.

测试代码如下:

For Each Item in Upload.Form 
response.write Item.Name&"="&Item.value&"<br>"
next

'此代码显示出aspupload组件处理的数据中form集合的所有内容

根据以上特点,编写如下代码可以解决提交的列表数据丢失问题.

'获取多选列表的值
For Each Item in Upload.Form 
if Item.Name="列表名" then
a=a&Item.value&","
end if
next


执行完后 "a" 的值即是列表框中提交的所有项目值.


第三点,文件保存路径中不能包含中文,这个问题试过了N种方法还是没能解决,也没搞清楚到底是什么原因造成的.目前只能绕道走了,解决方法就是 保存路径中不使用中文建立目录.如果哪位知道原因或想到了解决办法希望能告诉一下.
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值