我正在使用jquery $ .getJSON来检索城市列表。jquery json的字符
一切工作正常,但我来自爱沙尼亚,我们正在使用像õ,ü一些字符。 ä,ö。
当我将这样的字母传递给回调函数时,我一直得到空字符串。我试过base64编码(服务器端)解码(jquery base64插件)字符串(我认为这是一个好主意,只要我可以用PHP压缩页面,所以我不必担心带宽),但通过这种方式我最终得到了一些随机的中国符号。
这个问题最好的解决方法是什么?
谢谢。
我正在使用jquery $ .getJSON来检索城市列表。jquery json的字符
一切工作正常,但我来自爱沙尼亚,我们正在使用像õ,ü一些字符。 ä,ö。
当我将这样的字母传递给回调函数时,我一直得到空字符串。我试过base64编码(服务器端)解码(jquery base64插件)字符串(我认为这是一个好主意,只要我可以用PHP压缩页面,所以我不必担心带宽),但通过这种方式我最终得到了一些随机的中国符号。
这个问题最好的解决方法是什么?
谢谢。
您需要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>
使用UTF-8在你的PHP页面和输出编码
这看起来像一些编码/字符集问题:你确定你使用的是:
你必须确保你保持一致的字符编码。您需要的爱沙尼亚语字符是utf-8,因此您必须使用$.ajax
并明确设置字符编码(通过contentType)。
你可以把得到的ajax和处理它。
您也可以在调用getJSON来设置内容类型之前使用ajaxSetup。
http://api.jquery.com/jQuery.ajaxSetup/
这将允许您使用的getJSON
而且,这里是一个相关的SO张贴关于同一主题:How to set encoding in .getJSON JQuery
在echoing json_encode之前用utf8_encode()循环数组,解决了这个问题。 谢谢大家的提示。 – Mikk 2010-03-16 17:39:00