xmlhttp中文gbk,uft-8乱码解决方法

最近用了 dhtmlx的tree,中文的xml居然用不了,报错,整个系统是gb2312的,而dhtmlx只支持utf8,英文是正常的,中文就出错。
 
发现是,microsoft.xmlhttp的原因,就查到了上面的文件。

<script language="vbscript">
'处理中文
function bin2str(bin)
dim tmp,ustr,i
tmp=""
for i=1 to lenb(bin)-1
ustr=ascb(midb(bin,i,1))
if ustr>127 then
i=i+1
tmp=tmp&chr(ustr*256+ascb(midb(bin,i,1)))
else
tmp=tmp&chr(ustr)
end if
next
bin2str=tmp
end function
</script>

下面是一款详细实例

<script language="网页特效">
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>
乱码主要是中文,因为xmlhttp默认发送编码是uft-8所以如果要处理中文就进行url编码就行了。

时间: 2024-09-20 18:53:30

xmlhttp中文gbk,uft-8乱码解决方法的相关文章

PHP中文字符串截断无乱码解决方法_php技巧

一个比较好用的字符串截取函数: function substring($str, $start, $length){ //比较好用字符串截取函数 $len = $length; if($length < 0){ $str = strrev($str); $len = -$length; } $len= ($len < strlen($str)) ? $len : strlen($str); $tmpstr = ""; for ($i= $start; $i < $le

Linux中安装GBK/GB2312程序乱码解决方法

有些时候我们新的VPS安装GBK的程序的时候会发现乱码的问题,下面我们可以使用下面的方法解决. 找到etc/httpd/conf/ 目录中的httpd.conf 1.解决方法一 查找"AddDefaultCharset UTF-8",将"UTF-8"改为"GB2312"   2.解决方案二 查找"AddDefaultCharset UTF-8",将"AddDefaultCharset UTF-8"改为&qu

ajax中文乱码解决方法总结

ajax乱码解决办法一: 在服务器指定发送数据的格式: 在jsp文件中: response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件 或是 response.setContentType("text/xml;charset=UTF-8");//返回的xml文件 PHP:header("Content-Type:text/html;charset=GB2312"); ajax乱码

python 中文乱码解决方法

比如我从网上下载一些信息或写个电子邮件程序下载到本地,以记事本(txt) 形式写入并保存在本地计算机,为什么看到只是英文和乱码的?该怎样做呢? 答 乱码原因: 因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件.但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了. 解决方法: 在控制台打印的地方用一个转码就ok了,打印的时候这么写: print myname.decode('utf-8').encode('gb

jquery的ajax()函数传值中文乱码解决方法介绍_jquery

复制代码 代码如下: $.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: '商品'},success : function(data){ } } ); 问题: 提交后后台action程序时,取到的type是乱码 解决方法: 方法一:提交前采用encodeURI两次编码,记住一定是两次 1.修改以下代码 复制代码 代码如下: data:{id:1, t

mysql导入导出数据中文乱码解决方法小结_Mysql

linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: 复制代码 代码如下: mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql 那么导入数据的时候也要使用-

SMARTY 中文乱码解决方法

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-

EF之数据库连接问题与中文乱码解决方法

ef之数据库教程连接问题与中文乱码解决方法 the specified named connection is either not found in the configuration, not intended to be used with the ent 1.首先修改<add name="northwindentities"        connectionstring="metadata=res://*/northwind.csdl|res://*/nort

mysql导入导出数据中文乱码解决方法总结

linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码:  代码如下 复制代码 mysqldump   -uroot  -p  --default-character-set=utf8   dbname tablename  >  bak.sql 那么导入数据

php excel reader2.21导出excel中文乱码解决方法说明

之前我的PHP教程博客访友询问使用php excel reader2.21导出excel时中文出现乱码如何解决,现我说明下php excel reader导出excel中文乱码的解决方法,希望对使用php excel reader导出excel的朋友有所帮助. php excel reader介绍 php excel reader是一个读取Excel xsl文件内容的一个php excel类,目前最新版本是php excel reader2.21,网上可自行搜索,sourceforge上的php