【发布时间】:2016-03-10 06:31:43
【问题描述】:
我想在我的“.jsp”和“.html”中添加一些带重音的字符,但是当我在这些文件中写这些带重音的字符并加载我的页面时:
- “è”变成“é”
- “ç”变成“ç”
- “é”变成“Ô
步骤:
我已将 Eclipse 配置为使用 UTF-8 编码创建所有文件(我已检查:/src 或 /target 中的所有 .jsp 和 .html 文件em> 文件夹现在是 UTF-8)。
我的 .jsp 或 .html 文件(在 /src 或 /target 文件夹内)均未明确包含那些“é”、“ç” , "Ã"。
-
我所有的 .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> -
我已在 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 中添加了
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>。
有趣的事实:
- 当我使用 AJAX 从我的文本文件中加载 html 代码时,没有问题,“é”或“ç”字符都可以。我使用BalusC's code(你可以注意到他使用
response.setCharacterEncoding("UTF-8");,所以我不知道问题出在哪里)。 - 在开发环境(我的本地主机)上,如果我将
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>替换为带有重音符号的<%@ page pageEncoding="UTF-8" %>字符是可以的,但 仅在我的本地主机上,然后当我将我的项目上传到 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