首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTF8字符不起作用的JQuery发布内容

UTF8字符不起作用的JQuery发布内容
EN

Stack Overflow用户
提问于 2010-12-22 11:11:33
回答 1查看 787关注 0票数 0

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

$.ajax({ url: '/url-on-server', type: 'POST', data: 'action=SEND&'+ $('#text-field').val()), success: function(){}, dataType: 'json' }

我已经用FIREBUG和Liveheaders检查了请求,它们看起来很好……

Content-Type text/plain; charset=UTF-8

我相信这不是服务器端的事情,b/c当我将html表单更改为post而不使用JQuery脚本时,它工作得很好。我可以在服务器端看到中文字符,而不需要在服务器端做任何更改。

另一条线索..

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

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

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

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

正如你所看到的,它似乎以一种不同的方式对参数进行了编码,但我还无法在谷歌上搜索到解释或修复这个问题的方法。

提前感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2010-12-22 16:24:07

第一个:

代码语言:javascript
复制
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

...is字符串的URL转义形式:

代码语言:javascript
复制
action=SEND&msg=欢迎进入智慧的十年

第二个:

代码语言:javascript
复制
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 

...is UTF-8字符串的URL转义形式:

代码语言:javascript
复制
action=SEND&msg=欢迎进入智慧的十年

那些HTML实体,我假设(我还没有检查过)是您的亚洲字符。然而,我不认为在x-www-form-urlencoded中发送HTML实体是有效的-字符本身应该被使用,所以我很惊讶您看到了这一点。在一个快速测试中,将您的亚洲字符串提交到http://www.opinionatedgeek.com/dotnet/tools/base64decode/ (我能找到的第一个POST表单),我得到了示例,而不是第二个。您确定第二个就是正在传输的内容吗?(我会向Wireshark查询)什么浏览器,表单是如何构造的,等等?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4505855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档