iPhone浏览器/ IIS / Tomcat,日语语言环境,http参数搞砸了

时间:2010-06-23 05:58:24

标签: javascript iphone ajax internationalization locale

首先是环境:客户端是iPhone上的移动Safari,服务器由IIS提供的Tomcat 5.5组成。

我有一段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#”而不带引号。不知何故,最后会附加一个#。

有什么线索?

1 个答案:

答案 0 :(得分:0)

希望您需要做的就是在HTML页面的顶部添加一个元标记,指定正确的字符集(例如<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />),并匹配您的数据文件所期望的任何编码。

如果不起作用,请确保在整个应用程序中使用相同的字符编码(最好是UTF-8)。您的服务器端脚本以及包含将直接添加到响应流的文本字符串的任何文件都应使用该单个编码进行保存。如果可能,让您的服务器发送相同编码的“Content-Type”HTTP标头是个好主意(例如“text / html; charset = utf-8”)。并且您应该确保正在进行显示的移动safari页面具有正确的Content-Type元标记。

日本开发人员习惯于在EUC或ISO-2022-JP中存储文件,这两种情况常常迫使浏览器在某些浏览器上使用不同的字体,如果浏览器期待罗马字符集会严重破坏您的页面。好消息是,如果你被迫使用其中一种日文编码,那么这种编码通常适用于大多数英文文本。这是你需要注意的扩展角色。

现在我可能错了,但我认为通过AJAX加载这些文件不是问题(我认为浏览器根据它加载的每个文本文件的字符集重新映射字符数据),但是当你开始混合文档时编码在单个文件中(特别是在您的文档正文中),可能会发生不好的事情。也许移动safari需要对HTML文件和AJAX文件使用相同的编码。我希望不是。那将是丑陋的。

相关问题