我有一些以 UTF-8 正确编码的 JSP 页面,使用十六进制编辑器、Eclipse 和 TextPad 进行了验证,并具有适当的 pageEncoding 和 contentType 属性,每个都指定了 UTF-8。在浏览器中一切看起来都很好。现在我需要将一些内容提取到 JSP 标记文件中,而标记文件本身再次被正确编码为 UTF-8 并且每个页面编码为 UTF-8。我遵循了 Oracle 的文档:
http://docs.oracle.com/javaee/5/tutorial/doc/bnama.html#bname
现在的问题是,例如德语变音符号在浏览器中显示为双重编码的 UTF-8,而不是“ö”,我看到“ö”。如果我在 Eclipse 中将 pageEncoding 更改为 windows-1252,它本身似乎可以正确地重新编码文件,再次使用 TextPad 和十六进制编辑器进行验证,浏览器中的一切看起来都很好。
由于标记文件用于自动为 TagHandlers 创建 Java 源代码,我查看了生成的源代码文件并认识到在 pageEncoding UTF-8 上源文件本身已经包含用于德语变音符号的双编码 UTF-8。源文件本身以 UTF-8 编码,如果我在 TextPad 中查看源文件,我的德语变音符号的 out.write 语句包含“ö”,它也讲述了 UTF-8。如果我在十六进制编辑器中打开源文件,我会看到“ö”字符出现更多字节,正如双编码 UTF-8 所预期的那样。
以下是生成的源代码文件中的示例行:
out.write("\t\t\t\t\ttitle=\"Verzeichnis löschen\">\r\n");
我已经更改了我的 Eclipse 工作区的一些默认编码选项,但没有任何效果。在我看来,在标记文件的源代码生成期间,标记文件本身的 UTF-8 字符被保留,这与生成 JSP 文件的源代码的方式相反。如果我查看生成的带有德语变音符号的 JSP 文件的源代码,它们在 TextPad 中正确显示为“ö”,它识别编码为 UTF-8 的文件,或者如果我在十六进制编辑器中打开文件,则显示为“ö”。
我在这里有点迷茫,有没有人知道为什么以这种方式处理 UTF-8 编码的标记文件并且与 JSP 文件不同?我究竟做错了什么?
感谢您的任何提示!
有人认为还提到:
标记文件仍用于编码为 UTF-8 等的 JSP 文件中,因此标记文件产生的内容/编码/任何“周围”的内容仍然是正确编码的 UTF-8。正如我之前所说,标记文件的内容只是一些以前在 JSP 文件中运行良好的语句。
以下是我使用标记文件的语句:
<%@ taglib tagdir="/WEB-INF/tags/dirListing"
prefix="dirListing"
%>
[...]
<dirListing:tree dir="${requestScope.dir}" />