2010-03-16 51 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