使用 jquery 将 UTF-8 字符串发布到 servlet
Post a UTF-8 string to a servlet using jquery
我正在尝试将 UTF-8 字符串POSt到我的servlet(托管在TomCat中(,但是在服务器端读取的字符串不是UTF-8。 我已经通过Firebug验证了ajax标头的内容类型是否设置了utf-8编码。我正在向服务器发布"墨西哥",但我收到"MÉXICO"。
$.ajaxSetup({
scriptCharset: "utf-8" ,
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
});
$.ajax({
url: "SetData",
type: 'POST',
data: 'MÉXICO',
success: function(){
console.log('Data set');
}
});
这是servlet中的java代码
request.setCharacterEncoding("UTF-8");
BufferedReader reader = new BufferedReader( new InputStreamReader( request, "UTF-8" ) );
char[] chr = new char[5];
reader.read( chr );
builder.append( chr );
更新 1
我将js中的发布数据更改为encodeURIComponent('MÉXICO'(,但服务器仍然读取"MÉXICO"。
但是,如果我得到 encodeURIComponent('墨西哥'(的字符串值,即'M%C3%89XICO',它就可以工作了!我被打死了!知道为什么这应该工作吗?
$.ajax({
url: "SetData",
type: 'POST',
//data: 'MÉXICO', ** does not work
//data: encodeURIComponent('MÉXICO'), ** does not work
data: 'M%C3%89XICO', //works !!!!
success: function(){
console.log('Data set');
}
})
;
我不
明白你在做什么以及你在发送什么样的请求参数。代码不应该是这样的:
...
data:{key:'MÉXICO'},
...
或
...
data:{key:encodeURIComponent('MÉXICO')},
...
和在 SERVLET 中
...
request.getParameter('key')
...
或
stringURLDecoder.decode(
request.getParameter('key').toString(),
'UTF-8'
);
或者我什么都不懂(如果是这种情况,对不起:/(
尝试使用 encodeURIComponent(( 对数据值进行编码
data: encodeURIComponent('MÉXICO')
来源:JQuery AJAX 没有向我的服务器发送 UTF-8,只在 IE 中
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- 使用angularjs向浏览器发送servlet响应(下载功能)
- Javascript逻辑运算符和字符串/数字
- 为什么servlet不't发送json自定义字符串或Ajax don'我没有收到
- 从 Servlet 保存字符串
- 使用 jquery 将 UTF-8 字符串发布到 servlet
- 在JSP/Servlet和HTML5/JavaScript Web应用程序中使用本地化字符串支持多种语言
- 使用JavaScript发送字符串到Servlet,并从Servlet返回结果到JavaScript
- 如何将Json从servlet发送到JSP,而不将其转换为字符串
- 将字符串从JavaScript发送到Servlet
- 将字符串从 Java servlet 传递给 jsp 再到 js
- 处理通过 ajax 调用从 servlet 返回的“成功”字符串