2015-11-02 87 views
0

在我的應用程序中,我使用Spring,JPA Hibernate,JSF 問題是當我編寫阿拉伯語文本並在類似於(ÙابÙÙÙ) 中找到它時我使用Tomcat v 7.0 Server託管bean中的阿拉伯文字

的web.xml

<filter> 
    <filter-name>encoding-filter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>utf-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>encoding-filter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

形式是

<h:form dir="rtl" acceptcharset="UTF-8"> 

頭前

<?xml version="1.0" encoding="UTF-8"?> 

In page of page。

<f:view locale="TR" encoding="UTF-8" contentType="text/html" /> 
<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 

我在託管bean @MangedBean使用@Named@Component都不對了。

MySQL數據庫很好我從中讀取阿拉伯文本正確。

在構造函數中,

HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
HttpServletResponse res = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); 

try { 
    req.setCharacterEncoding("UTF-8"); 
    res.setCharacterEncoding("UTF-8"); 
} catch (UnsupportedEncodingException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

請任何暗示採取有效的阿拉伯文字。 在此先感謝。

+0

很難了解您的具體問題的問題。你的意思是,當你在託管bean內部執行'System.out.println(input)'時,你在服務器日誌中看到的是Mojibake而不是阿拉伯語?如果你忽略這一步驟,只是將輸入保存在數據庫中,那麼它是否仍然是Mojibake或者它是否適合在數據庫中使用阿拉伯語? – BalusC

+0

順便說一下,你不需要用大寫字母來開始每一個單詞。它使你的文本更難閱讀。只有在句子開頭和「JSF」,「休眠」等名字時才需要大寫。嘗試花更多時間閱讀英文文章並查找/遵循相同的模式。 – BalusC

+0

好的我會閱讀英文文章:D –

回答

0

我解決當我用tomcat的編碼過濾器

<filter> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>ignore</param-name> 
     <param-value>false</param-value> 
    </init-param> 
</filter> 
<filter> 
    <filter-name>Conversation</filter-name> 
    <filter-class>org.jboss.weld.servlet.ConversationFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>Conversation</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Spring編碼過濾器與Tomcat編碼過濾器相同。真正的原因還在別處。 – BalusC

+0

這個工作與我,但春季編碼過濾器不起作用 –