在我的应用程序中,我使用两种语言。英语和法语。
在英语中,它可以。但在阅读法语语言的属性文件时,它最终显示出mojibake。
我在我的属性文件中有这样的:
example.french.char=é
但它在应用程序中没有正确显示。我在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>
但它仍然显示出mojibake。
答案 0 :(得分: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 :(得分:0)
如果您的属性文件是UTF-8,则可能存在问题,因为它应该在加载(InputStream)中的ISO-8859-1中。您必须使用load(Reader)加载属性,在构造阅读器时指定编码。