最近看了下sql的虚拟web的功能(直接访问该web可以对sql执行操作并以xml的方式返回记录),感觉非常实用的功能。
想到如果用前台的ajax技术直接访问此web不就可以跳过asp页面了嘛?
于是自己实践了一下,但是就遇到了个问题:  首先,按照帮助文档建立了sql的虚拟web,然后写了个sql模版。前端用form提交(post方式)了一些数据,无论中英文都没问题。sql正常执行,也正常返回了记录。
  然后,前端使用ajax post了一些参数。发现中文在sqlweb端编码错误,以错误的字符存到了sql中(我用insert数据)。
    但是我所有的页面文件都用utf-8编码,post的数据中也指明utf-8编码。
  结果用ajax get方式传了同样的数据,中文字符又正常了。真是百思不解。我查了下网上的资料,关于sql的虚拟web的模版使用都没出现过以中文为参数的例子。但我感觉还是sql端出的问题,因为将同样的数据ajax post到一个普通的页面并没有乱码出现。难道是sql端不是按utf-8解析的?  小弟也第1次在csdn上求助,希望各位大侠能给条明路啊~~~~~ 

解决方案 »

  1.   

    xml 返回数据,就不存在编码问题了.可以在获取数据前,做下字符编码.
      

  2.   

    但是sqlweb端是一个xml格式的sql模版,如何进行字符编码呢? 好象连接受的参数类型都没法指定。
      

  3.   

    http://testweb.com.cn/sql为sqlweb地址,直接看返回的xml就变乱码了
    放上代码:xmlHttp.open("post","http://testweb.com.cn/sql",false)
    xmlHttp.onreadystatechange = callback;
    xmlHttp.setRequestHeader('charset','UTF-8');
    xmlHttp.setrequestheader("content-type","application/x-www-form-urlencoded");
    xmlHttp.send("sql=select '中文' as aaa for xml raw&root=root") //callback中接受sqlweb生成的xml
    alert(xmlHttp.responseText)