jQuery:为json响应utf8设置编码

Aha*_*ius 3 jquery encoding utf-8

我在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: {
                    pn: ui.item.pn
                },
                success: function(data) {
                    $("#cnLeiter").val(data.cn);
                }
            });
            }
        })
})
Run Code Online (Sandbox Code Playgroud)

响应标头(第一个标头不显示数据,只是重定向到输出):

Content-Length:0
Date:Tue, 22 May 2012 06:13:41 GMT
Location:http://localhost/api/redirection
Server:Apache-Coyote/1.1

Content-Length:177
Content-Type:text/html
Date:Tue, 22 May 2012 06:13:41 GMT
Expires:0
Server:Apache-Coyote/1.1
Run Code Online (Sandbox Code Playgroud)

注意:这些只是响应标头,请求标头是否也包含重要信息?

xva*_*tar 5

虽然看起来你已经解决了这个问题,但最好指出两件事:

  1. jQuery getJSON默认使用UTF-8.你给出的页面上接受的答案是,如果你想要一些非UTF-8的编码,你可以使用$.ajax().实际上,正如该页面上的另一个答案所说,即使您使用getJSON,您仍然可以使用$.ajaxSetup设置编码.

  2. 您可能希望将JSP标头contentType更改为'application/json; charset=utf-8',因为这是您的jQuery方面所期望的.使事情保持一致总是好的.