2013-10-30 131 views
1

我为我的jsp页面使用了所有“utf-8”编码。tomcat输出一些垃圾字符

我用struts2作为我的web框架并在tomcat上运行它。

最近,我发现部分汉字乱码,其余部分正常。

PLZ一起来看看下面的图片:

enter image description here

这幅画是关于输出HTML源代码。这里,链接的data-tmpl属性的内容必须与上面的div内容相同。

但事实并非如此,部分内容出现乱码。

下面是JSP代码:

页编码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags"%> 

上述画面的逻辑代码:

<div class="float-left ${st.odd?'odd':'even'}" > 
    ${template }【${signNoBracket }】 
</div> 
<a class="sms-editor-select-tmpl float-right" data-tmpl="${template }" data-sign="${signNoBracket }" href="###" style="display:none;">使用</a> 
<p class="clear"></p> 

此jsp页面是包括由母体jsp页面:

<s:include value="/controls/2.0/sms-editor.jsp"></s:include> 

通过使用EL表达式,'模板'的引用都是相同的。

那么为什么会发生这种情况呢? tomcat输出编码有问题吗?


添加在2013年11月1日0时25分02秒

大家好,这几天我做了一些实验发现,无论是Tomcat或struts框架导致这个问题出现。

我用jsp脚本代替el表达式,这个问题依然存在。

下面是一些代码卡:

<% 
    ValueStack vs = TagUtils.getStack(pageContext); 
    Object value = vs.findValue("template"); 
    System.out.println(value); 
%> 
<a class="sms-editor-select-tmpl float-right" data-tmpl="<%=value %>" data-sign="${signNoBracket }" href="###" style="display:none;">使用</a> 

而且我可以看到在Tomcat的控制台的println值,它是如我们预期正常。所以,在tomcat的汉字输出流中肯定会有一些bug。

的tomcat的输出(这是非常正常的):

#收货人#您好,看到您给的中差评,抱歉让您有了不满意的购物经历。若可以我们愿意承担运费为您提供退货,希望旺旺联系我们! 

我测试的两个版本的Tomcat我的应用程序,它们都存在这个问题。 一个是apache-tomcat-6.0.30,另一个是apache-tomcat-7.0.47。

那么,有没有任何机构可以帮助我解决这个问题?或者只是告诉我方式。


现在我尝试码头9.0.6运行我的应用程序,这个问题依然存在....谁能告诉我到底怎么....

OTL orz !!!

+0

你跟着http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8的每一步? –

+0

乱码数据来自哪里?你确定当你把它放到模板中时它不会被乱码吗? –

+0

@PhilippReichart数据不会出现乱码,因为链接上方div的内容也来自el表达式$ {template}的相同模板。 – jiacheo

回答

0

试试这个在您的Tomcat的server.xmlcontext.xml可以帮助:

<Connector port="8080" ... useBodyEncodingForURI="true"... 
+0

我试过这个,但问题仍然存在。 – jiacheo