2010-06-23 17 views
0

首先是環境:客戶端是iPhone上的移動Safari,服務器由IIS前端的Tomcat 5.5構成。iPhone瀏覽器/ IIS/Tomcat,日語語言環境,http參數變得混亂

我有一塊發送一個參數到服務器和回來一些響應javascript代碼:

var url = "/abc/ABCServlet"; 
var paramsString = "name=SomeName" 
xmlhttpobj = getXmlHttpObject(); //Browser specific object returned 
xmlhttpobj.onreadystatechange = callbackFunction; 
xmlhttpobj.open("GET", url + "?" + paramsString, true); 
xmlhttpobj.send(null); 

此工作正常時,iPhone的語言/區域設置爲EN/US;但是當語言環境/語言更改爲日語時,服務器收到的查詢參數變爲不帶引號的「SomeName#」。不知怎的,一個#在最後被追加。

任何線索爲什麼?

回答

0

希望您只需在HTML頁面的頂部添加一個元標記,以指定正確的字符集(例如<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />)並匹配數據文件所期望的任何編碼。

如果這不起作用,請確保在整個應用程序中使用相同的字符編碼(最好是UTF-8)。您的服務器端腳本和任何包含您將直接添加到響應流中的文本字符串的文件都應該使用該單一編碼進行保存。如果可能的話(例如「text/html; charset = utf-8」),讓服務器發送一個具有相同編碼的「Content-Type」HTTP標頭是一個好主意。而且您應該確保正在進行顯示的移動Safari頁面具有正確的Content-Type元標記。

日本開發人員在EUC或ISO-2022-JP中存儲文件的習慣很惡劣,這兩種方式都會迫使瀏覽器在某些瀏覽器上使用不同的字體,並且如果瀏覽器期望使用羅馬字符字符集。好消息是,如果您不得不使用其中一種日文編碼,那麼該編碼通常適用於大多數英文文本。這是您需要注意的擴展字符。

現在我可能是錯的,但我想通過AJAX加載這些文件不是問題(我認爲瀏覽器根據加載的每個文本文件的字符集重新映射字符數據),但是當您開始混合文檔編碼(尤其是在文檔主體中),可能會發生不好的事情。也許移動Safari瀏覽器對HTML文件和AJAX文件都要求相同的編碼。我希望不是。那會很難看。

+0

感謝您的迴應,但顯示的頁面有charset的meta標題,而且servlet還設置了http標題。 – saugata 2010-06-23 07:37:58

+0

兩個值是否相同? – Andrew 2010-06-23 08:10:42

+0

對不起。讓我問一個更好的問題:文件的字符集(或文件,如果它由多個文件組成)與服務器報告的字符集相同?同樣,在瀏覽器或HTTP頭文件中設置了哪些字符集?如果字符集不支持日文,如ISO 8859-1,則會遇到麻煩。 – Andrew 2010-06-23 08:37:51