我正在解析一个websocket消息,由于特定socket.io版本中的一个错误(很不幸,我无法控制服务器端),其中一些有效负载以utf-8双重编码:
正确的值应该是Wrocławskiej(请注意小写字母L带有斜线),但实际上我收到的是WrocÅawskiej。
我已经尝试使用java进行再次解码/编码
String str = new String(wrongEncoded.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8);
很遗憾,字符串保持不变。有没有办法在Java中进行双重解码?我看到了一个Python版本,他们先将其转换为raw_unicode
,然后再次解析它,但我不知道这是否有效或是否有类似的解决方案适用于Java。我已经阅读了一些关于该主题的帖子,但都没有帮助。
编辑:为了澄清,在Fiddler中,我收到了上述单词的以下字节序列:
WrocÃÂawskiej
byte[] arrOutput = { 0x57, 0x72, 0x6F, 0x63, 0xC3, 0x85, 0xC2, 0x82, 0x61, 0x77, 0x73, 0x6B, 0x69, 0x65, 0x6A };
String
(您称其为wrongEncoded
)是如何创建的?我想知道那里是否存在问题,以及服务器端是否也有问题。 - erickson