2013-12-19 17 views
0

在我的應用程序中,我使它具有兩種語言。英文和法文。 英文,好吧。但在閱讀法文語言的屬性文件時,它最終會顯示mojibake。 我有我的屬性文件是這樣的: example.french.char=éJSF-primefaces中的法語字符應用程序顯示Mojibake

但它不能正常顯示在應用程序中。我正在Windows中查看我的應用程序。我不想用Unicode字符替換法文字符。我希望它們能夠像通常顯示的那樣從屬性文件中讀取。

我該如何讓它工作? 請建議。我可以在不使用Unicodes的情況下查看法語字符嗎?

我的屬性文件使用UTF-8編碼。 請建議!

我嘗試以下太..

public class CharacterEncodingFilter implements Filter{ 

private FilterConfig config; 
@Override 
public void destroy() { 
    setConfig(null); 
} 

@Override 
public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain filter) throws IOException, ServletException { 

    request.setCharacterEncoding("UTF-8"); 

    response.setCharacterEncoding("UTF-8"); 
    response.setContentType("text/html; charset=UTF-8"); 

    filter.doFilter(request, response); 
} 

@Override 
public void init(FilterConfig config) throws ServletException { 
    setConfig(config); 
} 

public FilterConfig getConfig() { 
    return config; 
} 

public void setConfig(FilterConfig config) { 
    this.config = config; 
} 
} 

,並在web.xml

<filter> 
    <filter-name>charEncoding_Filter</filter-name> 
    <filter-class>com.edfx.tum.filter.CharacterEncodingFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>charEncoding_Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

添加了這個但仍顯示變爲亂碼。

回答

0

您是否嘗試使用servlet過濾器類將請求/響應編碼類型設置爲UTF-8。 下面是一個例子:

import java.io.IOException; 
import java.io.Serializable; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 

public class SetCharacterEncodingFilter implements Filter, Serializable { 

private static final long serialVersionUID = -4518853484989127891L; 

@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
    request.setCharacterEncoding("UTF-8"); 
    response.setCharacterEncoding("UTF-8"); 
    chain.doFilter(request, response); 
} 

@Override 
public void destroy() { 

} 

@Override 
public void init(FilterConfig arg0) throws ServletException { 

} 
} 

然後您註冊過濾器在web.xml中

<filter> 
    <filter-name>UTF8Charset</filter-name> 
<filter-class>your.package.name.SetCharacterEncodingFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>UTF8CharSet</filter-name> 
<url-pattern>*</url-pattern> 
</filter-mapping> 
+1

他也可以在JSF 2.X中使用註釋。 ('@WebFilter ...') –

+0

@britulin:是的,我也試過。但沒有幫助!請參閱我的修改。 – NDeveloper

0

如果你的屬性文件是UTF-8,你可能有一個問題,因爲它應該是ISO- 8859-1中的負載(InputStream)。在構建閱讀器時,您必須使用指定編碼的加載(閱讀器)加載屬性。

相關問題