iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >xmlhttp中乱码怎么办
  • 957
分享到

xmlhttp中乱码怎么办

2024-04-02 19:04:59 957人浏览 安东尼
摘要

这篇文章主要介绍xmlHttp中乱码怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 用XMLHTTP Post FORM时的表

这篇文章主要介绍xmlHttp中乱码怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

用XMLHTTP Post FORM时的表单乱码有两方面的原因——Post表单数据时中文乱码;服务器Response被XMLHTTP不正确编码引起的乱码。换句话说,本文主要解决两个问题——怎样正确Post中文内容&怎样正确显示得到的中文内容。

Part I Post中文内容

先看看E文的表单是怎么提交的:

复制代码 代码如下:


<SCRIPT language="javascript"> 
strA = "submit1=Submit&text1=scsdfsd"; 
var oReq = new ActiveXObject("MSXML2.XMLHTTP"); 
oReq.open("POST","http://ServerName/VDir/TstResult.asp",false); 
oReq.setRequestHeader("Content-Length",strA.length);   
oReq.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded"); 
oReq.send(strA); 
</SCRIPT> 


如果把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嘛当然就是这个样子了。既然这样,那我们也知道该怎么办了——自己做转换,代码见下:

复制代码 代码如下:


<SCRIPT language="VBScript"> 
Function URLEncoding(vstrIn) 
    strReturn = "" 
    For i = 1 To Len(vstrIn) 
        ThisChr = Mid(vStrIn,i,1) 
        If Abs(Asc(ThisChr)) < &HFF Then 
            strReturn = strReturn & ThisChr 
        Else 
            innerCode = Asc(ThisChr) 
            If innerCode < 0 Then 
                innerCode = innerCode + &H10000 
            End If 
            Hight8 = (innerCode  And &HFF00)\ &HFF 
            Low8 = innerCode And &HFF 
            strReturn = strReturn & "%" & Hex(Hight8) &  "%" & Hex(Low8) 
        End If 
    Next 
    URLEncoding = strReturn 
End Function 

strA = URLEncoding("submit1=Submit&text1=中文") 
oReq = CreateObject("MSXML2.XMLHTTP") 
oReq.open "POST","http://ServerName/VDir/TstResult.asp",false 
oReq.setRequestHeader "Content-Length",Len(strA) 
oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded" 
oReq.send strA 
</ScRIPT> 


(在这里俺把前面的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!

代码见下:

复制代码 代码如下:


<SCRIPT language="VBScript"> 
Function URLEncoding(vstrIn) 
    strReturn = "" 
    For i = 1 To Len(vstrIn) 
        ThisChr = Mid(vStrIn,i,1) 
        If Abs(Asc(ThisChr)) < &HFF Then 
            strReturn = strReturn & ThisChr 
        Else 
            innerCode = Asc(ThisChr) 
            If innerCode < 0 Then 
                innerCode = innerCode + &H10000 
            End If 
            Hight8 = (innerCode  And &HFF00)\ &HFF 
            Low8 = innerCode And &HFF 
            strReturn = strReturn & "%" & Hex(Hight8) &  "%" & Hex(Low8) 
        End If 
    Next 
    URLEncoding = strReturn 
End Function 

Function bytes2BSTR(vIn) 
    strReturn = "" 
    For i = 1 To LenB(vIn) 
        ThisCharCode = AscB(MidB(vIn,i,1)) 
        If ThisCharCode < &H80 Then 
            strReturn = strReturn & Chr(ThisCharCode) 
        Else 
            NextCharCode = AscB(MidB(vIn,i+1,1)) 
            strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 
            i = i + 1 
        End If 
    Next 
    bytes2BSTR = strReturn 
End Function 

strA = URLEncoding("submit1=Submit&text1=中文") 
oReq = CreateObject("MSXML2.XMLHTTP") 
oReq.open "POST","http://ServerName/VDir/TstResult.asp",false 
oReq.setRequestHeader "Content-Length",Len(strA) 
oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded" 
oReq.send strA 
alert bytes2BSTR(oReq.responseBody) 
</SSRIPT>

以上是“xmlhttp中乱码怎么办”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: xmlhttp中乱码怎么办

本文链接: https://www.lsjlt.com/news/83012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • xmlhttp中乱码怎么办
    这篇文章主要介绍xmlhttp中乱码怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 用XMLHTTP Post Form时的表...
    99+
    2022-10-19
  • php中script乱码怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php中script乱码怎么办?彻底解决php中包含js产生的中文乱码问题今天,在写php的登录模块的时候,在php文件中包含了js文件,来做登录时基本规范的检测,可是在...
    99+
    2021-01-07
    php script
  • MySQL中文乱码怎么办
    这篇文章给大家分享的是有关MySQL中文乱码怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言:MySQL是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中...
    99+
    2022-10-19
  • javascript中get乱码怎么办
    这篇文章主要为大家展示了“javascript中get乱码怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript中get乱码怎么办”这篇文章吧...
    99+
    2022-10-19
  • mysql中jsp乱码怎么办
    这篇文章主要介绍mysql中jsp乱码怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! mysql jsp乱码的解决办法:1、使用“show vari...
    99+
    2022-10-19
  • mysql中blob乱码怎么办
    小编给大家分享一下mysql中blob乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! my...
    99+
    2022-10-19
  • ubuntu中mysql乱码怎么办
    这篇文章主要介绍了ubuntu中mysql乱码怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ubuntu...
    99+
    2022-10-19
  • javascript中文乱码怎么办
    本教程操作环境:windows7系统、javascript1.8.5版、DELL G3电脑。javascript中文乱码怎么办?JS中文乱码问题js在浏览器中显示乱码的根本原因就是编码问题,所以解决了编码问题js基本上可以正常显示。一:利用...
    99+
    2023-05-14
    javascript 乱码 js乱码
  • javascript中alert乱码怎么办
    本教程操作环境:windows7系统、javascript1.8.5版本、Dell G3电脑。javascript中alert乱码怎么办?js外部脚本中alert中文乱码解决办法在做项目的时候遇到一个问题,在html文档中写好的js脚本,改...
    99+
    2023-05-14
    alert JavaScript
  • php中cookies乱码怎么办
    小编给大家分享一下php中cookies乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php cookies乱码的解决办法:首先在写入Cookie时,将...
    99+
    2023-06-14
  • php中mbsubstr乱码怎么办
    这篇文章主要介绍php中mbsubstr乱码怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php mbsubstr乱码的解决办法:首先在windows目录下找到php.ini;然后找到“;extension=p...
    99+
    2023-06-07
  • php中trim乱码怎么办
    这篇文章主要介绍了php中trim乱码怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php trim乱码是因为在执行rtrim时,会将0x81去掉,导致出现乱...
    99+
    2023-06-06
  • php7中文乱码怎么办
    小编给大家分享一下php7中文乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!php7中文乱码的解决办法:1、给PHP文件开头加上“exec('c...
    99+
    2023-06-09
  • Ajax乱码怎么办
    小编给大家分享一下Ajax乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ajax的全称是asynchronous ja...
    99+
    2022-10-19
  • phpstudy乱码怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。phpstudy乱码怎么办?phpstudy出现乱码导致Apache或者Nginx无法启动今天在使用Phpstudy的时候,突然无法创建新站点了(好久没用过了)。错误...
    99+
    2022-11-14
  • linux python中文乱码怎么办
    这篇文章将为大家详细讲解有关linux python中文乱码怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。linux python中文乱码的解决方法:1、查看matplotlib字体位置;2、上传字...
    99+
    2023-06-22
  • php bom 中文乱码怎么办
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php bom 中文乱码怎么办PHP开发因BOM产生的乱码问题项目中要在php中直接下载csv文件,而文件下载后,在excel中显示乱码。所以要增加BOM,方式如下:$b...
    99+
    2019-08-21
    php bom 乱码
  • PHP mysqli 中文 乱码怎么办
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。PHP mysqli 中文 乱码怎么办PHP mysqli新增数据中文乱码错误一、问题的出现在使用PHP mysqli连接数据库写入数据时,发现写入数据库的中文是乱码的...
    99+
    2020-11-17
    PHP mysqli
  • java url中文乱码怎么办
    url中文乱码 java1.将字符串转码:newString(“xxxxx”.getBytes(“iso-8859-1”),”utf-8”)这种转码方式有很大的弊端,因为它是使用指定的字符集将此String编码为 byte 序列,并将结果存...
    99+
    2021-11-14
    java基础 url 中文乱码 java
  • mysql 5.6中文乱码怎么办
    这篇文章主要为大家展示了“mysql 5.6中文乱码怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql 5.6中文乱码怎么办”这篇文章吧。mysql...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作