【问题标题】:French Characters in JSF-primefaces Application shows Mojibake [duplicate]JSF-primefaces 应用程序中的法语字符显示 Mojibake [重复]
【发布时间】:2014-01-08 03:38:03
【问题描述】:

在我的应用程序中,我将其设置为两种语言。英语和法语。 用英语,没关系。但是在阅读法语的属性文件时,它最终会显示 mojibake。 我的属性文件中有这样的: example.french.char=é

但它没有在应用程序中正确显示。我正在 Windows 中查看我的应用程序。我不想用 Unicode 字符替换法语字符。我希望它们像通常出现的那样从属性文件中读取。

我怎样才能让它工作? 请建议。我可以在不使用 Unicode 的情况下查看法语字符吗?

我的属性文件以 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>

但它仍然显示 mojibake。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    您是否尝试使用 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>
    

    【讨论】:

    • 他还可以在 JSF 2.X 中使用注解。 (@WebFilter...)
    • @britulin:是的,我也试过了。但没有帮助!请查看我的修改。
    【解决方案2】:

    如果您的属性文件采用 UTF-8 格式,您可能会遇到问题,因为它应该在加载(输入流)中采用 ISO-8859-1 格式。您必须使用您在构建阅读器时指定编码的 load(Reader) 加载属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 2012-04-04
      • 2016-05-11
      • 2012-06-08
      • 1970-01-01
      相关资源
      最近更新 更多