在Java服務端開發中,常常需要將數據以JSON格式返回給客戶端。然而,在返回中文數據時,很容易遇到中文亂碼問題。
JSON是以Unicode字符集為基礎的文本協議,因此本質上不會出現中文亂碼的問題。但是,在使用Java代碼生成返回JSON數據時,如果不設置合適的編碼方式,就會出現亂碼。
response.setCharacterEncoding("UTF-8"); // 設置response編碼方式為UTF-8 response.setContentType("application/json;charset=utf-8"); // 設置返回的Content-Type為application/json;charset=utf-8 JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "張三"); jsonObject.put("age", 28); response.getWriter().write(jsonObject.toString()); // 將JSON格式數據返回給客戶端
在上述代碼中,我們設置了response的編碼方式為UTF-8,并且設置了返回的Content-Type為application/json;charset=utf-8。這樣,返回的JSON數據中的中文就不會出現亂碼問題。
另外,在使用第三方JSON庫生成JSON數據時,也需要注意設置編碼方式。
ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 不序列化null值 objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); // 設置日期格式化方式 objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); // 格式化輸出 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 不序列化null值 objectMapper.setLocale(Locale.CHINA); // 設置地區為中國 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 不序列化null值 String jsonString = objectMapper.writeValueAsString(object); response.setCharacterEncoding("UTF-8"); // 設置response編碼方式為UTF-8 response.setContentType("application/json;charset=utf-8"); // 設置返回的Content-Type為application/json;charset=utf-8 response.getWriter().write(jsonString); // 將JSON格式數據返回給客戶端
總的來說,在Java服務端生成JSON數據時,要注意設置編碼方式,以避免中文亂碼問題。
上一篇vue的類選擇
下一篇java 對象池和線程池