gpt4 book ai didi

java - 将字符转换为 UTF-8

转载 作者:行者123 更新时间:2023-12-04 06:35:02 25 4
gpt4 key购买 nike

在我的单元测试中,我试图证明发送到客户端应用程序的 HTTP 响应仅包含有效的 UTF-8 字符。这是因为英镑符号“£”没有作为 UTF-8 编码字符发送,导致客户端应用程序验证失败。

在我的测试中,我正在执行以下操作:

//设置
byte[] outputData = "£".getBytes("ISO-8859-1");
String serviceXmlResponse = String.format(" %s ", outputData.toString());
String expectedXmlContent = " £ ";
当(service.getMessage()).thenReturn(serviceXmlResponse);

//行为
ModelAndView 结果 = controller.handlePostRequest(request, response, mav);

//断言
assertEquals(expectedXmlContent, result.getModel().get(ApplicationController.RESPONSE_KEY));

结果 XML 包含:

[B@1164b9b6

我在这里做错了什么?
谢谢

最佳答案

service.getMessage()将您的 XML 作为 String 返回, 而 result.getModel().get(ApplicationController.RESPONSE_KEY)以编码形式返回与 byte[] 相同的 XML ,您的测试应如下所示:

String serviceXmlResponse = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><some>£</some>";
when(service.getMessage()).thenReturn(serviceXmlResponse);

assertArrayEquals(serviceXmlResponse.getBytes("UTF-8"), (byte[]) result.getModel().get(ApplicationController.RESPONSE_KEY));

否则你的测试没有多大意义,特别是如果 result.getModel().get(ApplicationController.RESPONSE_KEY)返回 String ,以便在生成模型属性后在 View 中应用实际编码。

另见:
  • Unicode - How to get the characters right?
  • 关于java - 将字符转换为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968295/

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