我已经试了一天了,但找不到合适的解决办法。我的问题是:我正在本地Tomcat中开发一个基于Spring的应用程序。我的MySQl数据库有UTF-8编码集,当使用phpMyAdmin时,其中的所有内容都会正确显示。此外,使用log4j在catalina.out中使用日志文件中的输出也很好。
我的JSP页面由
<!-- encoding -->
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page pageEncoding="UTF-8" %>在我的JSP上显示数据也很好。我也可以使用特殊的字符从我的控制器发送数据,而不需要任何DB干扰。
String str = "UTF-8 Test: Ä Ö Ü ß è é â";
logger.debug(str);
mav.addObject("utftest", str);它在日志中和浏览器中的jsp页面上正确显示。
但是:当我的JSP文件中直接有特殊字符时,例如,对于头文件中的文本,这是行不通的。FF和谷歌Chrome显示奇怪的图表,但报告页面为UTF-8。当转换到拉丁语时,字符变得越来越奇怪了。
在从我的messages.properties文件中显示文本标记时,也会出现同样的问题,不过Eclipse会在右键单击该UTF-8时表示将使用该标记。
我有点迷路了,不知道现在去哪儿查。
摘要:
有什么想法吗?我真的很感激和小费。
发布于 2011-09-23 14:18:01
探索
与您的配置非常相似(Tomcat、Spring、Spring、JSF2),我遇到了与您完全相同的问题。
关于我自己的调查的一些事实:
<f:verbatim>&eacute;</f:verbatim>。在检查了我在论坛上找到的所有经典先决条件和重命令代码之后,仍然存在这个问题:
<?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的配置如下所示:
org.springframework.web.filter.CharacterEncodingFilter断断续续关键
我发现了将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插件进行的资源过滤上都存在配置问题,但我还没有找到它。
发布于 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。
发布于 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的自定义属性文件加载器。有关更多细节,请参见这篇文章。
https://stackoverflow.com/questions/4595915
复制相似问题