oni*_*unn 1 java jsf character-encoding
上周我问了一个问题,但JSF和charset编码
现在我将这个JSF包含在我的JBoss Portal环境中.与常见的jboss portlet桥接器.当我提交表单时,会发生一些奇怪的事情:
门户网站是UTF-8所以我的表单输入也是UTF-8但是在提交之后,字符再次被编码为UTF-8,导致这样的东西
äöü
Run Code Online (Sandbox Code Playgroud)
如果再次提交响应页面,则会变为此
äöü
Run Code Online (Sandbox Code Playgroud)
您可以点击提交按钮,看到每次都会对字符进行编码.
这是否按预期工作?
当最初使用解码的数据UTF-8被错误编码时,会发生这种情况ISO-8859-1.您可以通过以下方式轻松复制:
String input1 = new String("äöü");
System.out.println(input1); // äöü
String input2 = new String(input1.getBytes("UTF-8"), "ISO-8859-1");
System.out.println(input2); // äöü
String input3 = new String(input2.getBytes("UTF-8"), "ISO-8859-1");
System.out.println(input3); // äöü
Run Code Online (Sandbox Code Playgroud)
(请注意,最后一个实际上包含更多字符,但是SO的消息解析器会吃掉它们).
这意味着您的webapp中的某个地方ISO-8859-1被错误地使用而不是UTF-8.用给定的信息很难确定根本原因.您可以尝试在JSF bean操作方法中sysout请求参数并读取stdout中的输出(您只需要确保stdout UTF-8也在使用!如果您使用的是像Eclispe这样的IDE,则可以在Workspace中配置它偏好).如果这些字符看起来也是垃圾,那么请求编码是错误的.如果这些字符看起来很好,那么响应或webbrowser编码是错误的.要排除Web浏览器不被怀疑,您可以在例如Firefox中确定View > Character Encoding使用的编码.
| 归档时间: |
|
| 查看次数: |
4145 次 |
| 最近记录: |