日期:2014-05-17  浏览次数:20841 次

ASP 生成 JSON问题!求解
前台页面
$.getJSON("AjaxService.asp?uid=" + escape(option.value) + "&r=" + Math.random(), function (date) {
  if (date.success == 0) {
  validateSettings.succeed.run(option);
  namestate = true;
  } else {
  validateSettings.error.run(option, option.prompts.error.beUsed.replace("{1}", option.value));
  namestate = false;
  }
  })


后台 
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="JSON_2.0.4.asp"-->
<!--#include file="conn.asp"-->
<%
  Response.Charset="utf-8"
  Dim data,uname
  Dim rs,sql
  uname=Request.QueryString("uid")
  uname=VbsUnEscape(uname)
  Set data = jsObject()
  Set rs=server.createobject("adodb.recordset")
  sql="selse * from table where field ='"&uname&"'"
  if rs.eof and rs.bof then
  data("success")= -1
  else
  data("success") = 0
  end if
  data.Flush

  Function VbsUnEscape(str)
  Dim x
  x=InStr(str,"%") 
  Do While x>0
  VbsUnEscape=VbsUnEscape&Mid(str,1,x-1)
  If LCase(Mid(str,x+1,1))="u" Then
  VbsUnEscape=VbsUnEscape&ChrW(CLng("&H"&Mid(str,x+2,4)))
  str=Mid(str,x+6)
  Else
  VbsUnEscape=VbsUnEscape&Chr(CLng("&H"&Mid(str,x+1,2)))
  str=Mid(str,x+3)
  End If
  x=InStr(str,"%")
  Loop
  VbsUnEscape=VbsUnEscape&str
  End Function

%>


利用FireFox调试时候 后台返回乱码




------解决方案--------------------
每个asp文件最顶端加上
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Response.CodePage=65001%>
<%Response.Charset="utf-8"%>
asp文件保存成utf-8格式。这样不会有任何乱码问题。我就是这么做的。
------解决方案--------------------
如果你的网站是:utf-8的格式。就没有必须加下面的:
VbsUnEscape函数。因为这个函数只适合:gb2312的页面使用。