$.ajax({
type: "POST",
url: "SomePage.aspx/GetSomeObjects",
contentType: "application/json; charset=utf-8",
...
});
Run Code Online (Sandbox Code Playgroud)
它有时用作示例,或者软件可以在没有显式字符集的情况下中断.
应用程序/ json媒体类型的rfc 4627表示它不接受第6节中的任何参数:
The MIME media type for JSON text is application/json.
Type name: application
Subtype name: json
Required parameters: n/a
Optional parameters: n/a
Run Code Online (Sandbox Code Playgroud)
可以解释为charset不应该与application/json一起使用.
和第3节表明,这是没有必要指定字符集:
JSON text SHALL be encoded in Unicode. The default encoding is
UTF-8.
Since the first two characters of a JSON text will always be ASCII
characters [RFC0020], it is possible to determine whether …Run Code Online (Sandbox Code Playgroud) 我正在使用jquery $ .getJSON来检索城市列表.
一切都很好,但我来自爱沙尼亚,我们正在使用像õ,ü这样的角色.ä,ö.
当我将这样的字母传递给回调函数时,我不断得到空字符串.我试过base64编码(服务器端)-decode(jquery base64插件)字符串(我认为这是一个好主意,只要我可以用PHP压缩页面,所以我不必担心带宽),但是通过这种方式,我最终得到了一些随机的中文符号.
什么是这个问题的最佳解决方法.
谢谢.
我有一个输出JSON的servlet.servlet的输出编码是ISO-8859-1.我们的webapp中的页面也设置为ISO-8859-1.我会使用UTF-8,但这不在我的控制之内; 我们必须使用ISO-8859-1.
当我单独点击servlet时,我可以看到已经输出的JSON数据.字符编码是正确的,没有一个字符看起来很奇怪.
但是,当我通过AJAX调用servlet并使用检索到的数据来填充选择框时,我得到了(似乎)所有具有重音符号的字符(例如我带有重音符号或重音符号,音乐符号或抑扬音符号) ).当我在Firebug下的Net选项卡中查看响应时,我可以看到文本看起来很好.但是,当我使用该数据填充选择框时,我会得到带有问号的钻石.
这些字符都是有效的ISO-8859-1字符,所以我不明白为什么它们没有正确显示.
编辑
更多信息.我用GET,jQuery.ajax我已经开始scriptCharset了ISO-8859-1.在服务器端,我已经明确地将编码设置为ISO-8859-1request.setCharacterEncoding("ISO-8859-1");
编辑
代码示例:
这就是我目前所拥有的.我scriptCharset: "ISO-8859-1"没有添加任何效果.
jQuery.ajax({
url: "/countryAndProvinceCodeServlet",
data: data,
dataType: "json",
type: "GET",
success: function(data) {
...
},
});
Run Code Online (Sandbox Code Playgroud)
我的servlet使用org.json.JSONObject并通过执行简单输出字符串response.getWriter().print(jsonObject.toString());
UPDATE
约每JSON,以及如何它应该是UTF-8的评论,我想看看我是否能获取数据为文本(所以设置dataType到text中jQuery.ajax),然后评估它作为自己的JSON(在Javascript).这似乎也不起作用!当我这样做时console.log,我仍然可以获得时髦的钻石.但是,当我在Firebug的Net选项卡下查看它时,一切都显示正常:
网络标签:
{"error":false,
"provinces":{"DZ-01":"Adrar",
"DZ-16":"Alger",
"DZ-23":"Annaba",
"DZ-44":"Aïn Defla",
"DZ-46":"Aïn Témouchent",
"DZ-05":"Batna",
"DZ-07":"Biskra",
"DZ-09":"Blida",
"DZ-34":"Bordj Bou Arréridj",
"DZ-10":"Bouira",
"DZ-35":"Boumerdès",
"DZ-08":"Béchar",
"DZ-06":"Béjaïa",
"DZ-02":"Chlef",
"DZ-25":"Constantine",
"DZ-17":"Djelfa",
"DZ-32":"El Bayadh",
"DZ-39":"El Oued",
"DZ-36":"El Tarf", …Run Code Online (Sandbox Code Playgroud) 我现在已经三天苦苦挣扎,这就是我所拥有的,我无法理解为什么我会看到这种行为.
我的问题是我有一个MySql西班牙语数据库,其中字符集和排序规则定义为utf8_general_ci.当我在delete.php中查询数据库时,就像这样"DELETE FROM countryNames WHERE country = '$name'"
指定的行不会被删除.我通过post变量在delete.php中设置变量$ name $name=$_post['data'].主要是$ name获取西班牙语字符的值,例如español,México等.从main.php调用delete.php文件.如果我从main.php发送一条帖子$.post("delete.php", {data:filename});,查询不会删除该条目(尽管'filename'字符串是在utf8)但如果我创建一个表单,然后在main.php中发布我的数据变量,查询工作!对我来说最大的问题是为什么我必须提交一个表单才能使查询起作用?我看到的是我的数据库拒绝该值,如果它来自jquery post调用,但是当它来自提交的表单时接受它.(我没有更改代码以使查询起作用.只需通过提交表单发布值)
这是一个网上有很多信息的问题.不过,我还没有解决它.
我在网页上有一个动态加载的表单.我使用jquery $ .post提交它.我的页面适用于瑞典人,因此需要与åäö合作.
将数据发布到服务器时,它会将数据加载回新表.退回的åäö已损坏.示例åååäääööö=åååäääÃÃÃÃ
服务器端是php.我将所有返回内容的页面编码到浏览器中,如下所示:
<?php header('Content-type: text/html; charset=ISO-8859-1'); ?>
Run Code Online (Sandbox Code Playgroud)
我在服务器端尝试过utf8_encode和utf8_decode.实际上没有区别.
我试过这个:encodeURIComponent($(this).serialize())其中$(this)是要提交的表单.当然,这不起作用,我不知道如何编码像$(this)这样的对象.
我认为这是许多人所做的事情,但它似乎不是一个标准的解决方案.
因此,我需要帮助的是如何使用javascript/jquery/etc发布表单.并在服务器端处理它,返回它,并且它们看起来应该如此.如果服务器收到utf8,那就完全没问题了.原则应该只使用UTF8然后问题解决了吗?似乎应该有另一种解决方案.
我在json中得到了jQuery的响应.逻辑工作正常,但我不能让他正确编码数据(如üäö).
我搜索过并在SO上发现了这个问题,建议将其更改getJSON为正常的AJAX调用.我已经做到了,并添加了setContentType选项,但是,只要äüö出现,我就会得到奇怪的迹象.
关于如何解决这个问题的任何想法?
$(function() {
$("#cnAntragsteller").autocomplete({
source: function(request, response) {
$.ajax({
url: "http://localhost/api",
dataType: "jsonp",
data: {
search: request.term
},
success: function(data) {
response($.map(data.persons, function(item) {
return {
label: item.cn + " (PN: " + item.imPersonalNumber + ")",
value: item.cn,
pn: item.imPersonalNumber,
cn: item.cn,
cc: item.imCostCenter,
jb: item.imJobTitle,
jbd: item.imJobTitleDescription
}
}));
}
});
},
minLength: 0,
select: function(event, ui) {
$("#pnAntragsteller").val(ui.item.pn);
$("#jbAntragsteller").val(ui.item.jb);
$("#jbdAntragsteller").val(ui.item.jbd);
$("#ouKostenstelle").val(ui.item.cc);
$.ajax({
url: "http://localhost/api",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: …Run Code Online (Sandbox Code Playgroud)