当前位置: 首页 > 图文教程 > 网络编程 > AJAX技术 > 一句话解决AJAX中文乱码问题[推荐]

AJAX技术
AJAX初级应用-RSS无刷新聚合器的代码与下载
一个封装的Ajax类
pjblog发表评论用的ajaxJS.js
AJAX和JSP实现的基于WEB的文件上传的进度控制代码
AJAX实现仿Google Suggest效果
Baidu Musicbox 用到的ajax代码
[asp]天枫AJAX百度音乐即时听附下载
[asp]天枫AJAX blog V1.0 程序提供下载了
ajax+asp无限级分类树型结构的代码
asp+ajax实现静态页面分页的代码
用ajax实现在单击事件下加载一个DIV层的脚本
AJAX javascript的跨域访问执行
javascript 拖动_cookie_ajax等
Ajax象棋演示和并提供代码下载
仿google搜索提示 SuggestFramework的使用
利用AJAX开源项目 在网页里播放视频实现方法
ajax 服务器文本框自动填值
ajax 数据库中随机读取5条数据动态在页面中刷新
asp.net 全部选中与取消操作,选中后的删除(ajax)实现无刷新效果
javascript Ajax 类实现代码

AJAX技术 中的 一句话解决AJAX中文乱码问题[推荐]


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 58 ::
收藏到网摘: n/a

写了个通过一般处理程序处理的AJAX小程序 结果遇到了国内程序员遇到的最多的问题:中文乱码 下面是我的程序
HTML :
复制代码 代码如下:

<!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>
<title>无标题页</title>
<script type="text/javascript" language="javascript">
var xmlhttp;
function createXMLHttprequest()
{
if(window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
}
function inData()
{
var txtval=document.getElementById("txt").value;
createXMLHttprequest();
xmlhttp.open("GET","request.ashx?val="+txtval,true);
xmlhttp.onreadystatechange=getData;
xmlhttp.send(null);
}
function getData()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
document.getElementById("showDT").innerHTML=xmlhttp.responseText;
}
}
}
</script>
</head>
<body>
<form id="form1" action="">
<div>请输入姓名:
<input type="text" id="txt" />
<input type="button" value="提交" id="asdf" onclick="inData()" />
<span id="showDT" ></span>
</div>
</form>
</body>
</html>

request.ashx :
Code
复制代码 代码如下:

<%@ WebHandler Language="C#" Class="request" %>
using System;
using System.Web;
public class request : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string tab ="来自服务器的信息:您好 "+context.Request.QueryString["val"].ToString()+" --by time:"+DateTime.Now.ToLongTimeString();
context.Response.Write(tab);
}
public bool IsReusable {
get {
return false;
}
}
}

baidu搜了一大堆 大致意思是 AJAX提交数据时,使用的是UTF-8的编码 并且不可以设置为其他格式
如何解决呢 最后发现一个JS的函数escape与unescape 用escape()对将要提交的汉字进行编码,会出现大致%10%20的字符,类似与.NET中Server.UrlEncode()与Server.UrlDecode();
将JS获得的表单值进行重新编码
Code
复制代码 代码如下:

var txtval=escape(document.getElementById("txt").value);
OK, 问题解决!
其他可能还有别的办法至今没遇到 希望这个办法能帮到遇到这种困境的朋友