jquery json的字符

时间:2010-03-16 11:54:55

标签: jquery unicode base64 getjson

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

一切正常,但我来自爱沙尼亚,我们正在使用像õ,ü这样的角色。 ä,ö。

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

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

谢谢。

4 个答案:

答案 0 :(得分:4)

您需要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>

答案 1 :(得分:2)

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

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

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

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

这将允许您使用getJSON

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这看起来像某些编码/字符集问题:您确定要使用:

  • 您的应用程序中到处都是相同的字符集?
    • 数据库
    • 源文件
    • 发送到浏览器的HTTP标头
  • 支持这些角色的字符集?
    • 即。 :你使用的是UTF-8吗?
    • 这是通常用于网络应用程序的Unicode字符集,几乎支持任何人都能想到的字符