各位高手帮我解决AJAX传输数据的中文乱码问题
在网站中注册用户时有无刷新检测用户名是否重名的功能以下是前台的检测程序:<script>varxmlHttp=false;try{xmlHttp=newActiveXOb...
在网站中注册用户时有无刷新检测用户名是否重名的功能
以下是前台的检测程序:
<script>
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
function callServer() {
var u_name = document.getElementById("user").value;
if ((u_name == null) || (u_name == "")) return;
var url = "check.asp?name=" + escape(u_name);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}
function updatePage() {
if (xmlHttp.readyState < 4) {
username.innerHTML="正在检测用户名是否可用......";
}
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
username.innerHTML=response;
}
}
此前台页面的编码格式是harset=gb2312
但是由于XMLHTTP提交到后台后默认是UTF8编码的
所以我的后台程序只能用UTF8编码,否则无法显示中文
我的后台程序是:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="../Connections/web.asp" -->
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Request.QueryString("name") <> "") Then
Recordset1__MMColParam = Request.QueryString("name")
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_web_STRING
Recordset1.Source = "SELECT * FROM Admin WHERE A_username = '" + Replace(Recordset1__MMColParam, "'", "''") + "'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
<!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-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<% If Recordset1.EOF And Recordset1.BOF Then %>
该用户可以注册
<% Else %>
该用户已经被注册
<% End If %>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
这样,当填写的用户名尚没有被注册时时,可以正常显示中文"该用户可以注册";当填写的用户名已经被注册时时,可以正常显示中文"该用户已经被注册"!
但是新的问题来了
由于前台和后台用的是不同的编码格式,如果填写的用户名是中文的,那么即使该用户名已经被注册时,也显示:“该用户可以注册”
请高手们帮帮改改这些代码,使后台也可以使用gb2312 编码格式,从而使注册时输入中文的用户名时也能检测出"该用户已经被注册"!
本人将不胜感激,各位就是我的再生父母 展开
以下是前台的检测程序:
<script>
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
function callServer() {
var u_name = document.getElementById("user").value;
if ((u_name == null) || (u_name == "")) return;
var url = "check.asp?name=" + escape(u_name);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(null);
}
function updatePage() {
if (xmlHttp.readyState < 4) {
username.innerHTML="正在检测用户名是否可用......";
}
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
username.innerHTML=response;
}
}
此前台页面的编码格式是harset=gb2312
但是由于XMLHTTP提交到后台后默认是UTF8编码的
所以我的后台程序只能用UTF8编码,否则无法显示中文
我的后台程序是:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="../Connections/web.asp" -->
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Request.QueryString("name") <> "") Then
Recordset1__MMColParam = Request.QueryString("name")
End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_web_STRING
Recordset1.Source = "SELECT * FROM Admin WHERE A_username = '" + Replace(Recordset1__MMColParam, "'", "''") + "'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
<!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-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<% If Recordset1.EOF And Recordset1.BOF Then %>
该用户可以注册
<% Else %>
该用户已经被注册
<% End If %>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
这样,当填写的用户名尚没有被注册时时,可以正常显示中文"该用户可以注册";当填写的用户名已经被注册时时,可以正常显示中文"该用户已经被注册"!
但是新的问题来了
由于前台和后台用的是不同的编码格式,如果填写的用户名是中文的,那么即使该用户名已经被注册时,也显示:“该用户可以注册”
请高手们帮帮改改这些代码,使后台也可以使用gb2312 编码格式,从而使注册时输入中文的用户名时也能检测出"该用户已经被注册"!
本人将不胜感激,各位就是我的再生父母 展开
展开全部
你都说了的嘛 两边的编码格式不同,那你就改成相同的嘛
或者在后台页面中
Recordset1__MMColParam = Request.QueryString("name") 得到name之后就对其进行编码格式转换,我一直都用的jsp的,对asp不是很熟
在jsp中是这样来做的:
String name = request.getParameter("name");
name = new String(name.getBytes("8859_1"),"gb2312");
或者在后台文件的的接收数据之前,就先设置request的编码格式,jsp中是这样的
request.setCharacterEncoding("gb2312");
就ok了
你这是使用的get方式进行请求的,如果你用的是post方式的话,
就必须进行两次编码,一次解码...................
或者在后台页面中
Recordset1__MMColParam = Request.QueryString("name") 得到name之后就对其进行编码格式转换,我一直都用的jsp的,对asp不是很熟
在jsp中是这样来做的:
String name = request.getParameter("name");
name = new String(name.getBytes("8859_1"),"gb2312");
或者在后台文件的的接收数据之前,就先设置request的编码格式,jsp中是这样的
request.setCharacterEncoding("gb2312");
就ok了
你这是使用的get方式进行请求的,如果你用的是post方式的话,
就必须进行两次编码,一次解码...................
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询