我爲我的jsp頁面使用了所有「utf-8」編碼。tomcat輸出一些垃圾字符
我用struts2作爲我的web框架並在tomcat上運行它。
最近,我發現部分漢字亂碼,其餘部分正常。
PLZ一起來看看下面的圖片:
這幅畫是關於輸出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 !!!
你跟着http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8的每一步? –
亂碼數據來自哪裏?你確定當你把它放到模板中時它不會被亂碼嗎? –
@PhilippReichart數據不會出現亂碼,因爲鏈接上方div的內容也來自el表達式$ {template}的相同模板。 – jiacheo