2009-11-10 46 views
0

通常我們使用UTF-8編碼標準來發送每種語言的請求。 但是在某些語言中,這種編碼標準工作不正常,那麼在這種情況下,我們使用ISO-8859-1的 。什麼是Ajax中的編碼?

回答

1

這是一個相當模糊的問題。

如果你的意思是問,「AJAX中的編碼是什麼?」那麼答案就是AJAX不是一種編碼,它是客戶端 - 服務器通信的一種方法。

如果您打算問「AJAX使用什麼編碼?」那麼答案就是AJAX響應可以使用任何你想要的編碼,但是它通常應該匹配發出請求的HTML頁面的編碼。

+0

如果你是正確的關於該AJAX可以響應使用任何你想要的編碼,你能提供一個解決這個問題的相關問題http://stackoverflow.com/questions/8238548/how-to-do-the-使用下面的工作 - 情景,PHP和阿賈克斯 – TopDeveloper 2011-12-05 12:54:58

3

您可以使用任何你想要的編碼。但是從你的問題來看,這聽起來像你通常使用UTF-8,但是有時候你會從某個地方獲取數據,這些數據會以不同的編碼進入(例如,Internet Explorer傾向於使用ISO- 8859-1)。

如果您要提供UTF-8編碼的文本,並且您從某處獲得非UTF-8編碼的文本,則必須先將其轉換爲UTF-8,然後再將其發送到該行。一個很好的做法是自動清理從Web瀏覽器接收到的所有數據,並將其重新編碼爲UTF-8。不幸的是,瀏覽器並不總是告訴你它使用什麼編碼;如果沒有提供,你可能會認爲它是UTF-8或ISO-8859-1。

如果您使用的是服務器端語言,那麼您將需要了解如何使用該語言轉換編碼。例如,PHP有iconv()函數調用,以及一個非常好的函數mb_detect_encoding($text),當你不知道時,它會做一個相當不錯的工作來猜測給定數據位的編碼是什麼。

像這樣的事情會是爲了(假設PHP服務器端):你做任何事情與它之前

$text = iconv(mb_detect_encoding($text), 'UTF-8', $text); 

做到這一點所有的用戶輸入(例如,使用array_map自動轉換用戶輸入):

function convert_to_utf8($text) { 
    return iconv(mb_detect_encoding($text), 'UTF-8', $text); 
} 
$_GET = array_map('convert_to_utf8', $_GET); 
$_POST = array_map('convert_to_utf8', $_POST); 

最好的辦法是確定瀏覽器是否提供編碼,並將其用作iconv()的第一個參數而不是mb_detect_encoding。