【问题标题】:Java - Google App Engine - Encoding problems with UTF-8Java - Google App Engine - UTF-8 的编码问题
【发布时间】:2016-03-10 06:31:43
【问题描述】:

我想在我的“.jsp”和“.html”中添加一些带重音的字符,但是当我在这些文件中写这些带重音的字符并加载我的页面时:

  • “è”变成“é”
  • “ç”变成“ç”
  • “é”变成“Ô

步骤:

  1. 我已将 Eclipse 配置为使用 UTF-8 编码创建所有文件(我已检查:/src/target 中的所有 .jsp 和 .html 文件em> 文件夹现在是 UTF-8)。

  2. 我的 .jsp 或 .html 文件(在 /src/target 文件夹内)均未明确包含那些“é”、“ç” , "Ã"。

  3. 我所有的 .jsp 都在开头包含这些行:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8" />
            <meta content="IE=edge" http-equiv="X-UA-Compatible" />
            <meta content="width=device-width, initial-scale=1" name="viewport" />
            <!-- ... -->
        </head>
    
  4. 我已在 appengine-web.xml 中添加了这些参数:

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
        <!-- Added below -->
        <property name="file.encoding" value="UTF-8" />
        <property name="DEFAULT_ENCODING" value="UTF-8" />
    </system-properties>
    

我也尝试添加 GAE 文档中显示的这个东西,但我的应用程序抛出异常:

<env-variables>
    <env-var name="DEFAULT_ENCODING" value="UTF-8" />
</env-variables>

GAE 文档说 (source):

为避免与您的本地环境冲突,开发服务器不会根据该文件设置环境变量,并要求本地环境已将这些变量设置为匹配值。 (这不适用于系统属性。)

所以我删除了这部分并在我的系统中添加了以下环境变量:DEFAULT_ENCODING = UTF-8

更多:

  • 当我使用 firebug 查看网络时,它会为我加载的页面显示 Content-Type text/html; charset=utf-8
  • 当我生成我的项目时,Google 的工具已经在我的 pom.xml 中添加了&lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;

有趣的事实:

  • 当我使用 AJAX 从我的文本文件中加载 html 代码时,没有问题,“é”或“ç”字符都可以。我使用BalusC's code(你可以注意到他使用response.setCharacterEncoding("UTF-8");,所以我不知道问题出在哪里)。
  • 在开发环境(我的本地主机)上,如果我将 &lt;%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %&gt; 替换为带有重音符号的 &lt;%@ page pageEncoding="UTF-8" %&gt; 字符是可以的,但 仅在我的本地主机上,然后当我将我的项目上传到 Google App Engine 服务器 仍然不行,firebug 不再显示 Content-Type text/html; charset=utf-8,W3C 标记验证服务告诉我:

    内部编码声明 utf-8 与文档的实际编码不一致(windows-1252)

我的配置:

  • Maven 3.2
  • IDE:Eclipse Luna
  • 操作系统:Windows 7

【问题讨论】:

  • 我在 Eclipse 中遇到了这种问题,我必须做的就是将我的文件/项目/工作区的默认编码从 cp1209 或类似的东西更改为 UTF-8。使用 eclipse 以外的编辑器(即 notepad++)查看您的文件,并查看它为您的文件检测到的文件编码。 notepad++ 也可以转换您的文件。从长远来看,我肯定会改变工作区编码。
  • 我也有(并且有)从开发服务器数据存储中保存和加载的数据的编码问题。如果是这种情况,可以安全地假设这些问题将在实际环境中消失。
  • 由于服务器的响应声称charset=utf-8,看来原始文件本身存在问题。根据其他用户的建议,您应该在其他编辑器甚至十六进制编辑器中检查它们,以确定编码是否正确完成。

标签: java eclipse jsp google-app-engine utf-8


【解决方案1】:

我遇到了同样的问题。我的解决方案是在生成 html 的 .jsp 文件的顶部添加以下标记: <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

【讨论】:

    猜你喜欢
    • 2011-10-29
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 2012-06-11
    • 2014-10-13
    • 2012-11-13
    • 2018-02-16
    相关资源
    最近更新 更多