在我的单元测试中,我试图证明发送到客户端应用程序的HTTP响应仅包含有效的UTF-8字符。这是因为英镑符号'£'没有作为UTF-8编码字符发送,导致客户端应用程序验证失败的问题。将字符转换为UTF-8
在我的测试我做了以下内容:
// setup byte[] outputData = "£".getBytes("ISO-8859-1"); String serviceXmlResponse = String.format("<?xml version=\"1.0\" encoding=\"utf-8\" ?><some>%s</some>", outputData.toString()); String expectedXmlContent = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><some>£</some>"; when(service.getMessage()).thenReturn(serviceXmlResponse); // act ModelAndView result = controller.handlePostRequest(request, response, mav); // assert assertEquals(expectedXmlContent, result.getModel().get(ApplicationController.RESPONSE_KEY));
生成的XML包含:
<?xml version="1.0" encoding="utf-8" ?><some>[[email protected]</some>
我在做什么错在这里? 谢谢
调用`的ToString()`字节数组上没有做什么,你认为它。无论如何,你为什么要把`£`转换成字节数组? – 2011-02-11 11:14:26
这是造成问题的符号,可能是由于原生的,即承载应用程序的机器上的ISO8859-1编码。该应用程序本质上是中间件,充当服务之间的代理。 – DrPep 2011-02-11 11:21:49