首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse / Spring / Tomcat 6中奇怪的字符编码问题

问Eclipse / Spring / Tomcat 6中奇怪的字符编码问题
EN

Stack Overflow用户
提问于 2011-01-04 16:27:00
回答 5查看 23.2K关注 0票数 3

我已经试了一天了,但找不到合适的解决办法。我的问题是:我正在本地Tomcat中开发一个基于Spring的应用程序。我的MySQl数据库有UTF-8编码集,当使用phpMyAdmin时,其中的所有内容都会正确显示。此外,使用log4j在catalina.out中使用日志文件中的输出也很好。

我的JSP页面由

代码语言:javascript
复制
<!-- encoding -->
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page pageEncoding="UTF-8" %>

在我的JSP上显示数据也很好。我也可以使用特殊的字符从我的控制器发送数据,而不需要任何DB干扰。

代码语言:javascript
复制
String str = "UTF-8 Test: Ä Ö Ü ß è é â";
logger.debug(str);
mav.addObject("utftest", str);

它在日志中和浏览器中的jsp页面上正确显示。

但是:当我的JSP文件中直接有特殊字符时,例如,对于头文件中的文本,这是行不通的。FF和谷歌Chrome显示奇怪的图表,但报告页面为UTF-8。当转换到拉丁语时,字符变得越来越奇怪了。

在从我的messages.properties文件中显示文本标记时,也会出现同样的问题,不过Eclipse会在右键单击该UTF-8时表示将使用该标记。

我有点迷路了,不知道现在去哪儿查。

摘要:

  • 数据库存储很好
  • JSP上的DB输出很好
  • 直接在JSP上输出表单控制器是很好的。
  • 即使是形式上的阅读也是可以的。
  • .properties文件和JSP文本是不精细的!

有什么想法吗?我真的很感激和小费。

EN

回答 5

Stack Overflow用户

发布于 2011-09-23 14:18:01

探索

与您的配置非常相似(Tomcat、Spring、Spring、JSF2),我遇到了与您完全相同的问题。

关于我自己的调查的一些事实:

  • Tomcat窗口下的WAR :编码问题,
  • 在Tomcat下的相同战争:没有问题→怀疑操作系统默认编码是在UTF-8中,
  • 在运行的Tomcat下的相同战争:没有问题→WTF?!
  • 在UTF-8中传递带有自然拉丁字符而不是unicode占位符的属性文件:解决外部标签的问题,
  • 在JSF2页面中也是一样:总是遇到问题,唯一起作用的就是<f:verbatim>&amp;eacute;</f:verbatim>。

在检查了我在论坛上找到的所有经典先决条件和重命令代码之后,仍然存在这个问题:

  • XML文件顶部的<?xml version="1.0" encoding="UTF-8" ?>,
  • <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />在相同文件的HTML头中,
  • encoding="UTF-8" in <f:view>.

Tomcat的配置如下所示:

  • 连接器上的URIEncoding="UTF-8“(通常是因为它涉及URI编码而不是页编码)
  • org.springframework.web.filter.CharacterEncodingFilter断断续续
  • 另外(我大概没注意到这一点): fr UTF-8

关键

我发现了将Tomcat命令行与经典命令行MS启动进行比较的解决方案。唯一的区别是参数-Dfile.encoding=UTF-8。这是我解决问题的关键。

Set JAVA_OPTS=-Dfile.coding=“utf-8”,它运行良好。

(试图)解释

我发现的唯一解释是,Tomcat使用JVM编码,默认情况下是系统编码( Linux上的UTF-8,Windows上的CP1252 )。Eclipse根据其工作区编码设置强制JVM编码。在UTF-8中传递JVM给出了解决方案。

我怀疑这并不是真正正确的问题,而且无论是在我的堆栈上还是在由maven资源插件或maven-war插件进行的资源过滤上都存在配置问题,但我还没有找到它。

票数 6
EN

Stack Overflow用户

发布于 2011-11-10 06:46:34

正如BalusC所说,您必须以utf-8格式保存文件。

要解决包含的文件的附加问题,只需包括标题

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

在每个包含的文件的顶部。这告诉servlet将文件视为编码的UTF-8,而不是使用默认的ISO-8859-1。

票数 4
EN

Stack Overflow用户

发布于 2011-01-04 16:50:54

您需要配置Eclipse以将文件保存为UTF-8。

转到“窗口”>“首选项”,在顶部输入“筛选文本”( filter text encoding ),浏览所有部分,将所有内容设置为UTF-8。特别是对于JSP文件,这是在Web > JSP文件>编码中。选择最上面的UTF-8选项(称为"ISO 10646/Unicode(UTF-8)")。

对于属性文件,这是一个不同的故事。根据规范,默认情况下它们将被读为ISO-8859-1。为此,您需要native2ascii工具,或者提供一个使用UTF-8的自定义属性文件加载器。有关更多细节,请参见这篇文章。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4595915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档