Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有UTF8字符的JQuery发布内容无效_Jquery_Utf 8 - Fatal编程技术网

带有UTF8字符的JQuery发布内容无效

带有UTF8字符的JQuery发布内容无效,jquery,utf-8,Jquery,Utf 8,我有一个JQuery脚本,将表单字段的内容发布到一个简单的servlet。当我在表单字段中输入中文字符(utf8)并使用JQuery.ajax()方法发布时,服务器会将这些字符视为问号(欢迎进入智慧的十年 在服务器上被视为) $.ajax({ url:“/url在服务器上”, 键入:“POST”, 数据:'action=SEND&'+$('#文本字段').val()), 成功:函数(){}, 数据类型:“json” } 我已经用FIREBUG和Liveheaders检查了请求,它们看起来不错

我有一个JQuery脚本,将表单字段的内容发布到一个简单的servlet。当我在表单字段中输入中文字符(utf8)并使用JQuery.ajax()方法发布时,服务器会将这些字符视为问号(欢迎进入智慧的十年 在服务器上被视为)


$.ajax({
url:“/url在服务器上”,
键入:“POST”,
数据:'action=SEND&'+$('#文本字段').val()),
成功:函数(){},
数据类型:“json”
}

我已经用FIREBUG和Liveheaders检查了请求,它们看起来不错


内容类型为文本/纯文本;字符集=UTF-8

我相信在没有JQuery脚本的情况下将html表单更改为post时,b/c不是服务器端的事情,它工作得很好。我可以看到服务器端的中文字符,而不改变服务器端的任何内容

另一条线索

当我使用JQuery$.ajax()方法发布表单时。这是LiveHeaders中请求的外观


操作=发送消息和消息=%E6%AC%A2%E8%BF%8E%E8%BF%9B%E5%85%A5%E6%99%BA%E6%85%A7%E7%9A%84%E5%8D%81%E5%B9%B4

然而,当我以传统的web1.0方式发布表单时,这就是我在live Header中看到的


操作=发送和消息=%26%2327426%3B%26%2336814%3B%26%2336827%3B%26%2320837%3B%26%2326234%3B%26%2324935%3B%26%2330340%3B%26%2321313%3B%26%2324180%3B

正如您所看到的,它似乎以不同的方式编码参数,但我无法通过谷歌找到解释或修复方法

提前感谢您的帮助。

首先:

action=SEND&msg=%E6%AC%A2%E8%BF%8E%E8%BF%9B%E5%85%A5%E6%99%BA%E6%85%A7%E7%9A%84%E5%8D%81%E5%B9%B4
…是字符串的URL转义形式:

action=SEND&msg=欢迎进入智慧的十年
第二点:

action=SEND&msg=%26%2327426%3B%26%2336814%3B%26%2336827%3B%26%2320837%3B%26%2326234%3B%26%2324935%3B%26%2330340%3B%26%2321313%3B%26%2324180%3B 
…是UTF-8字符串的URL转义形式:

action=SEND&msg=欢迎进入智慧的十年
那些HTML实体,我想(我没有检查)是你的亚洲字符。然而,我不认为以x-www-form-urlencoded的形式发送HTML实体是有效的——应该使用字符本身,所以我很惊讶您看到了这一点。在一个快速测试中,将您的亚洲字符串提交到(我能找到的第一个POST表单),我得到了示例,而不是第二个。你确定第二个是正在传输的吗?(我会向Wireshark询问)什么浏览器,表单是如何构造的,等等