gpt4 book ai didi

java - JSF 字符获得双 UTF-8 编码

转载 作者:行者123 更新时间:2023-11-29 08:18:51 25 4
gpt4 key购买 nike

上周我问了一个问题但是JSF和charset编码

relevant SO question

现在我将这个 JSF 包含在我的 JBoss Portal 环境中。使用通用的 jboss portlet 桥。当我提交表单时,发生了一些奇怪的事情:

门户网站是 UTF-8,所以我的表单输入也是 UTF-8,但在提交后,字符再次编码为 UTF-8,这导致了类似这样的事情

äöü

如果再次提交响应页就变成这样了

äöü

您可以点击提交按钮并再次看到字符每次都被编码。

这是否按预期工作?

最佳答案

当最初使用 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); // äöü

(请注意,最后一个实际上包含更多字符,但 SO 的消息解析器将它们吃掉了)。

这意味着您的网络应用程序中的某处错误地使用了 ISO-8859-1 而不是 UTF-8。很难用目前已知的信息查明根本原因。您可以尝试在 JSF bean 操作方法中 sysout 请求参数并读取标准输出中的输出(您只需要确保标准输出也使用 UTF-8!如果您使用的是像 Eclispe 这样的 IDE,你可以在 Workspace preferences 中配置它。如果这些字符看起来也很垃圾,那么就是错误的请求编码。如果这些字符看起来不错,那么它是错误的响应或网络浏览器编码。要排除网络浏览器被怀疑,那么您可以在例如Firefox 确定View> Character Encoding 使用的编码。

关于java - JSF 字符获得双 UTF-8 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2019558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com