Los*_*809 6 jsf utf-8 character-encoding http-request-parameters
我遇到的问题与在GlassFish中将JSF输入提交值的设置请求字符编码设置为UTF-8相同,提交的值以Mojibake形式到达.但是,答案是针对GlassFish而我正在使用JBoss AS 7.
我已经指定了JDBC连接URL以使用UTF-8:
jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
在我的JSF页面顶部:
<?xml version='1.0' encoding='UTF-8' ?>
Run Code Online (Sandbox Code Playgroud)
如何在JBoss AS 7中解决同样的问题?或者更好,以更通用的方式使其适用于所有服务器?
Bal*_*usC 12
您链接到的问题已经排除了DB编码的原因,因为在保存到DB之前打印/重新显示提交的值期间已经出现问题.因此,问题在于HTTP请求编码.
指定了charset的JDBC连接URL,
jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)
只告诉MySQL JDBC驱动程序使用UTF-8解码SQL查询中的值,然后再将其发送到DB.这不仅完全超出了JSF的范围,而且这也不是导致问题的原因,前提是您绝对肯定您遇到与链接问题相同的问题.
指定了charset的XML prolog,
<?xml version='1.0' encoding='UTF-8' ?>
Run Code Online (Sandbox Code Playgroud)
只告诉XML解析器在构建XML源代码之前使用UTF-8解码XML源代码.实际使用的XML解析器是在JSF视图构建时间内由Facelets内部使用的SAX.这部分与HTTP请求/响应编码完全无关,因此不太可能导致您的问题.
它们都不设置HTTP请求编码,而您需要设置HTTP请求编码.您链接到的问题已经显示了如何为Glassfish服务器执行此操作.在您的情况下,您使用的是JBoss AS服务器.特定于Glassfish的设置不适用,JBoss不支持这样的设置.您需要引入自定义servlet过滤器来完成这项工作.例如
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15058 次 |
| 最近记录: |