【发布时间】:2012-10-31 23:00:26
【问题描述】:
我正在尝试使用 Google App Engine 使特殊字符(如德语变音符号(ä、ö、ü)),但遗憾的是它不起作用。 Eclipse 文本文件编码设置为UTF-8,我在index.html 中使用<meta http-equiv="content-type" content="text/html; charset=UTF-8">,web.xml 也使用encoding="utf-8"。
如果我在本地编译我的项目,字符会正确显示。如果我将其部署到 google apppot,则字符显示如下:��。我还检查了浏览器编码,设置为UTF-8,我错过了什么?
编辑 这是一个在本地工作但不能在线工作的示例:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>ä ö ü</title>
</head>
<body>
<form name="profile" action="">
<select name="p" size="1">
<option value="1">ä</option>
<option value="2">ö</option>
</select>
</form>
</body>
编辑2 我可以隔离问题。一开始我使用谷歌频道 api 与客户沟通。在这里,我将令牌写给用户。这就是问题。代码如下:
我想我必须转换为 UTF-8,但是在哪里?
FileReader reader = new FileReader("index.html");
CharBuffer buffer = CharBuffer.allocate(16384);
reader.read(buffer);
reader.close();
String index = new String(buffer.array());
index = index.replaceAll("\\{\\{ token \\}\\}", token);
index = index.replaceAll("\\{\\{ user \\}\\}", account);
resp.getWriter().write(index);
为什么字符在网上显示不正确?
【问题讨论】:
-
您可能没有在您的应用程序中正确处理 unicode - 但由于您没有向我们展示任何代码,我们无法提供帮助。您还没有指定这是静态数据还是动态呈现的数据。
-
是的,对不起。这些问题是由静态数据引起的,例如在索引 html 中。请参阅我的编辑。谢谢
-
文档实际上是用 UTF-8 编码的吗?
-
是的,它是没有 BOM 的 UTF-8。在本地一切正常。
-
如果浏览器将文档解释为 UTF-8 并且误解了某些字符,则表明文档实际上不是 UTF-8 编码的。至少在服务器上。尝试在浏览器中选择不同的编码,然后查看字符是否被正确解释(可能是 Windows Latin 1)。
标签: google-app-engine utf-8 special-characters