我正在使用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