2013-06-28 56 views
-1

我已經搜索了一段時間,沒有找到答案。Json不檢索口音

我從數據庫輸出信息,並在javascript中使用jQuery.getJSON來檢索。問題是,如果數據庫字段有重音符,它不會被髮送。但是,如果沒有口音,它會。

的JavaScript代碼是標準:

jQuery.getJSON (
     toURLget, 
     null, 
     function(data) { 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

在頭部,所以它不是這一點。我試過對json進行編碼,但沒有奏效。

+0

「如果數據庫字段有口音,就不會被髮送」 - 你的意思是,它不會被髮送,或者你的功能將不處理呢?如果你寫這樣的成功函數,會發出什麼警告:'function(data){alert(data);}'? –

回答

1

發送之前,您可以嘗試在服務器端轉義字段和數據。

在客戶端就可以使用:

var result = unescape(dataFromServer); 

(你不說出你使用的服務器平臺)。在escape/unescape功能

更多信息:
http://www.w3schools.com/jsref/jsref_escape.asp

更新

如下statet在評論(@Tommi)還有其他的方法來以及解碼此(從摘錄文章):

escape() -

escape和unescape函數可讓您對字符串進行編碼和解碼。 轉義函數返回ISO拉丁字符集中的參數 的十六進制編碼。 unescape函數返回指定的十六進制編碼值的ASCII 字符串。

encodeURI() -

是encodeURI方法返回一個編碼的URI。如果將結果傳遞給012URdecodeURI,則返回原始字符串。 encodeURI方法 不對以下字符進行編碼:「:」,「/」,「;」和「?」。使用 encodeURIComponent來編碼這些字符。

encodeURIComponent() -

encodeURIComponent方法會返回一個編碼的URI。如果將 結果傳遞給decodeURIComponent,則返回原始字符串。由於 encodeURIComponent方法對所有字符進行編碼,因此如果 字符串表示諸如/folder1/folder2/default.html的路徑,請小心。 斜槓字符將被編碼,如果作爲 發送請求到Web服務器,將不會生效。如果字符串 包含多個單一URI組件,請使用encodeURI方法。

http://xkr.us/articles/javascript/encode-compare/

+1

關於'escape'和'encodeURIComponent'有一篇很好的文章。http://xkr.us/articles/javascript/encode-compare/對於我來說,最好還是使用pair函數進行解碼。 – Tommi

+0

謝謝@Tommi。我會更新我的答案以包含它們。 – K3N

+0

感謝您的意見。我的詭計是什麼mysql_set_charset('utf8');在我的sql查詢之前。 – lenny