注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Dotnet >> ASP编程 >> Dotnet正文

XMLHTTP Post Form时的表单乱码

文章来源:网页教学网收集整理 作者:佚名 更新时间:2008-5-25 4:14:48 【 】 【加入收藏
  用XMLHTTP Post Form时的表单乱码有两方面的原因——Post表单数据时中文乱码;服务器Response被XMLHTTP不正确编码引起的乱码。换句话说,本文主要解决两个问题——怎样正确Post中文内容&怎样正确显示得到的中文内容。

  Part I Post中文内容
  先看看E文的表单是怎么提交的:

  如果把strA = "submit1=Submit&text1=scsdfsd";换成:strA = "submit1=Submit&text1=中文";
  你会发现提交上去的东东根本不对,ASP中Request.Form("Text1")根本取不到值。俺用Request.BinaryRead把一个HTML Form中的Post内容写出来看了看,才发现问题——Form提交时也要编码的,编码后的中文是类似于%??%??的转义字符,比如“中文”就被编码为:%D6%D0%CE%C4。呵呵,也怪俺笨,人家CONTENT-TYPE里明明写的清清楚楚——application/x-www-form-urlencoded,urlencoded嘛当然就是这个样子了。既然这样,那我们也知道该怎么办了——自己做转换,代码见下:


  (在这里俺把前面的JavaScript的代码改成了VBScript,不是吃饱了撑的没事干,原因见后)

  Part II.正确显示得到的中文内容
  OK,如果你在Server端把Form的内容写到数据库/文件的话,你在那里看到的中文毫无问题,但是,假如你想看看Server的Response——问题来了:如果Response的结果不是XML,XMLHTTP.responseXML里当然是不会有东东的,那就用responseText好了,在代码的最后加一句:alert(oReq.responseText) 。看看俺们辛勤劳动的结果。

  但是但是.....怎么所有的中文全变成了方格? (我打不出来,有兴趣自己去试,也不用Post,Get一个含有中文的网页就可以发现了。)

  原因很简单:XMLHTTP得到Response时假定Response是UTF8编码的,如果Response是XML,那还可以通过encoding来指定编码,但HTML就不行了。(见鬼的GB2312,再次打倒!)所以它把含GB2312编码的HTML当成UTF8格式,不出错才有鬼!

  不过好在还有补救的办法:XMLHTTP的responseBody 属性里包含的可是未解码的Resonse——"a raw undecoded bytes as received directly from the server" :),唯一的问题是,responseBody返回的是一个unsigned bytes数组,我们怎么去访问它,怎么把它转换成BSTR?

  这就是为什么我在上面把代码改成VBScript的原因——VBScript Can do it,but JavaScript Cannot!

  代码见下:
  • 上一篇Dotnet:

  • 下一篇Dotnet:
  • 最 新 热 门
     asp根据表单自动生成sql语句的函数
     ASP教程:自己写的数据库操作类
     ASP处理多关键词查询实例代码
     asp文件打不开的原因
     IIS7.0在Vista系统下安装注意事项
     XMLHTTP Post Form时的表单乱码
     xmlhttp是如何完成异步操作的
     VB.Net处理MySQL中二进制问题
     VB.NET的常量与枚举学习
     VB.NET字符数据类型和其他数据类型
    最 新 推 荐
     asp根据表单自动生成sql语句的函数
     ASP教程:自己写的数据库操作类
     ASP处理多关键词查询实例代码
     asp文件打不开的原因
     IIS7.0在Vista系统下安装注意事项
     XMLHTTP Post Form时的表单乱码
     ASP错误解决:800a003a错误
     ASP实例:幻灯片新闻代码
     ASP操作XML的类
     asp控制xml数据库的6段代码
    相 关 文 章

    xmlhttp是如何完成异步操作的
    什么是XML
    XML WebService实例详细解析
    ASP.NET 2.0中XML数据的处理
    asp.net如何去掉HTML标记
    ASP操作XML的类
    asp控制xml数据库的6段代码
    ASP操作XML文件的主要方法和实现
    spring 中加载xml配置文件的方式
    XML文件上传技术

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用