带有 jquery json 的字符

Posted

技术标签:

【中文标题】带有 jquery json 的字符【英文标题】:Characters with jquery json 【发布时间】:2011-01-28 02:01:18 【问题描述】:

我正在使用 jquery $.getJSON 来检索城市列表。

一切正常,但我来自爱沙尼亚,我们使用了一些字符,如 õ、ü。 ä, ö。

当我将这样的字母传递给回调函数时,我不断收到空字符串。我试过base64编码(服务器端)-解码(jquery base64插件)字符串(我认为这是一个好主意,只要我可以用php压缩页面,所以我不必担心带宽),但这样我就得到了一些随机的中文符号。

解决此问题的最佳方法是什么。

谢谢。

【问题讨论】:

【参考方案1】:

你需要utf8_encode()你的输出数据。无需将客户端的编码设置为 UTF-8,因为它已经是默认值了。

<?php
    if( isset( $_GET['json'] ) ) 

        die( json_encode( array( 'text' => utf8_encode( 'õ, ü. ä, ö' ) ) ) );
    

    include_jquery(); # this outputs jquery include
>?

<script>

    $.getJSON( 'this_file.php',  'json': 1 , function( data ) 
        console.log( 'data', data );
    );

</script>

【讨论】:

在回显 json_encode 之前使用 utf8_encode() 循环数组解决了这个问题。谢谢大家的提示。【参考方案2】:

您必须确保保持一致的字符编码。您想要的爱沙尼亚字符在 utf-8 中,因此您必须使用 $.ajax 并明确设置字符编码(通过 contentType)。

您可以获取生成的 ajax 并对其进行处理。

您也可以在调用 getJSON 之前使用 ajaxSetup 来设置内容类型。

http://api.jquery.com/jQuery.ajaxSetup/

这将允许您使用 getJSON

另外,这里有一篇关于同一主题的相关 SO 帖子:How to set encoding in .getJSON JQuery

【讨论】:

【参考方案3】:

在您的 php 页面中使用 UTF-8 并作为输出编码

【讨论】:

【参考方案4】:

这看起来像是一些编码/字符集问题:你确定你在使用吗:

在您的应用程序中到处都是相同的字符集? 数据库 源文件 发送到浏览器的 HTTP 标头 支持这些字符的字符集? 即: 你用的是 UTF-8 吗? 这是一种 Unicode 字符集,通常用于 Web 应用程序,并且几乎支持人们能想到的任何字符

【讨论】:

以上是关于带有 jquery json 的字符的主要内容,如果未能解决你的问题,请参考以下文章

带有 JSON 数组字符串的 Jquery 自动完成扩展器

带有 é 等特殊字符的 json

jsStringFormat() 和带有 JSON 的撇号

Rails 无法正确解码来自 jQuery 的 JSON(数组变成带有整数键的散列)

消息:无效的 JSON 原语:带有 Webmethod 的 ajax jquery 方法

jquery 怎么将json字符串转化为json对象