在我的單元測試中,我試圖證明發送到客戶端應用程序的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