2010-03-16 28 views
7

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

一切工作正常,但我来自爱沙尼亚,我们正在使用像õ,ü一些字符。 ä,ö。

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

这个问题最好的解决方法是什么?

谢谢。

回答

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> 
+0

在echoing json_encode之前用utf8_encode()循环数组,解决了这个问题。 谢谢大家的提示。 – Mikk 2010-03-16 17:39:00

0

使用UTF-8在你的PHP页面和输出编码

0

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

  • 同样的字符集无处不在您的应用程序?
    • 数据库
    • 源文件
    • HTTP标头发送到浏览器
  • 支持这些字符的字符集?
    • 即:您使用的是UTF-8吗?
    • 这是多数民众赞成通常用于Web应用程序的UNICODE字符集,并且支持几乎所有的字符可以想想
2

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

你可以把得到的ajax和处理它。

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

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

这将允许您使用的getJSON

而且,这里是一个相关的SO张贴关于同一主题:How to set encoding in .getJSON JQuery