Javascript 发送®时出现问题;通过AJAX请求访问字符

Javascript 发送®时出现问题;通过AJAX请求访问字符,javascript,asp.net,ajax,character-encoding,yui,Javascript,Asp.net,Ajax,Character Encoding,Yui,我有一个简单的asp.net web应用程序,它使用YUI进行Ajax请求。应用程序从文本框中读取文本并向服务器发送AJAX请求。下面是代码 <body> <form id="form1" runat="server"> <div> <input id="txt" name="txt" type="text" value="[Enter some value]" /> <input id="bt

我有一个简单的asp.net web应用程序,它使用YUI进行Ajax请求。应用程序从文本框中读取文本并向服务器发送AJAX请求。下面是代码

<body>
    <form id="form1" runat="server">
    <div>
        <input id="txt" name="txt" type="text" value="[Enter some value]" />
        <input id="btn" type="button" value="button" />
    </div>
    <div id="out"></div>
    </form>
</body>

下面是初始化Ajax请求的客户端脚本

YAHOO.util.Event.onDOMReady(function() {
    YAHOO.util.Event.addListener("btn", "click", function(evt) {
        var url = "Server.aspx?type=test&txt=" + document.getElementById("txt").value;
        var btn = document.getElementById("out");
        var cObj = YAHOO.util.Connect.asyncRequest('GET', url, {
            success: function(o) {
                btn.innerHTML += "<div>" + o.responseText + " = " + o.responseText.charCodeAt(0) + "</div>";
            },
            failure: function(o) {
                confirm("Its failure");
            },
            cache: false
        });
    });
});
YAHOO.util.Event.onDOMReady(函数(){
YAHOO.util.Event.addListener(“btn”,“单击”,函数(evt){
var url=“Server.aspx?type=test&txt=“+document.getElementById(“txt”).value;
var btn=document.getElementById(“out”);
var cObj=YAHOO.util.Connect.asyncRequest('GET',url{
成功:功能(o){
btn.innerHTML+=“”+o.responseText+“=”+o.responseText.charCodeAt(0)+“”;
},
故障:功能(o){
确认(“其失败”);
},
缓存:false
});
});
});
我在应用程序中所做的是接受用户输入的字符,将其保存到db并将其写入Ajax响应。系统不支持Unicode(数据库)


现在我的问题是,当在文本框中输入“Registered”(注册)字符(0174)并将其发送到服务器时,我得到的是用户在文本框中输入的“65533”。此外,此字符不是Unicode字符,那么为什么会出现这种行为

从您设置的标记推断,后端是在asp.net中编程的吗?检查您正在使用的编码(参见示例)。您的问题听起来很像是与您向客户端提供的内容不同(请参阅服务器设置)。

忘记配置问题,您的问题可能与编辑器及其用于保存文件的文件编码有关。仅设置字符编码是不够的,有时甚至无关紧要,您必须将文件本身保存在支持字符集的编码中,例如:不带BOM的utf-8,获取一个可以查看此信息的编辑器。当然,在web服务器、数据库服务器(假设您正在使用数据库服务器)和客户端之间可能会发生很多事情。签出whe web服务器中的默认字符、数据库和编辑器用于保存文件的文件编码。

您使用什么字符编码?您注意到它不是任何Unicode编码,但您没有指定使用哪种编码。您是指发送的Ajax请求的内容编码或内容类型吗?可能涉及许多不同的编码(设置),所有这些都可能很重要,例如DB编码、交付给客户端的页面编码、,在服务器端工作时进行编码。顺便说一句,您的问题实际上仅限于“register”字符,还是有其他字符也显示此问题?目前我只看到“register”的问题,但我怀疑类似的其他字符可能也存在相同的问题。看起来UTF编码按预期工作,但javascript escape()功能是导致问题的全部原因。我发现,我们遇到这个问题的应用程序使用escape()函数对参数进行编码,这导致了®字符的问题。我们将其更改为encodeUriComponent(),从而解决了问题。谢谢谢谢,我试着在web.config中添加globalizatioin,但对我不起作用。还有其他的输入吗?如果我理解正确,回答AJAX请求的服务器部分会接收文本,将其放入数据库并发送回;发送回的值到达错误;但您检查了服务器上的值了吗,它们仍然正确吗?不是它们也不正确。。。我在调试时检查了服务器上的值,内容类型为application/x-www-form-urlencoded;utf-8;我很难理解的是,当前的代码在Mozill上产生正确的行为,但IE不起作用,我的意思是生成“?”符号。经过大量的内容类型测试后,我将方法改为POST,它开始运行良好。但当我在实际服务器上尝试修复时,它的测试应用程序仍然失败。听起来您的测试和生产服务器的配置不同。好吧,大多数浏览器都会以页面交付时使用的编码(或标记为使用的编码,或他们认为使用的编码)发回数据-检查服务器输出的编码(对于ASP.NET,我的答案中的配置应实际适用)以及html输出中给出的内容(元标记中的字符集)匹配,并且是您也希望从浏览器返回的。