【问题标题】:Special characters like ä, ö, üä、ö、ü 等特殊字符
【发布时间】: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


【解决方案1】:

FileReader 始终使用平台默认编码。使用

InputStreamReader(new FileInputStream("index.html"), "UTF-8")

【讨论】:

    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2020-10-17
    • 2016-07-21
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多