json在後臺封裝後,返回中文亂碼
阿新 • • 發佈:2019-02-20
Spring版本:3.*RELEASE
這裡統一轉換為utf-8
因為低版本的spring缺少許多方法,所以不能用produces
方案一、將json資料寫入PrintWriter 流中
@RequestMapping(value="/upload")
public void upload( HttpServletResponse response) throws Exception{
//建立Json物件
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg" ,"hello");
jsonObject.put("msg2","world");
try {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter(); //獲取寫入物件
out.print(json); //將json資料寫入流中
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
} //獲取寫入物件
}
方案二、將json資料寫入ServletOutputStream 流中
@RequestMapping(value="/upload")
public void upload(@RequestParam("file") MultipartFile file,HttpServletRequest request, HttpServletResponse response) throws Exception{
//建立Json物件
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg","hello");
jsonObject.put("msg2","world");
try {
//要將json物件轉換為string型別
String json = jsonObject.toString();
ServletOutputStream os = response.getOutputStream(); //獲取輸出流
os.write((json.getBytes(Charset.forName("utf-8")))); //將json資料寫入流中
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
} //獲取寫入物件
}
更高版本的spring可以利用設定 @RequestMapping 的 produces 引數
@RequestMapping(value="/upload",produces = "text/html;charset=UTF-8")
@ResponseBody
public jsonObject upload(@RequestParam("file") MultipartFile file,HttpServletRequest request, HttpServletResponse response) throws Exception{
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
//建立Json物件
JSONObject jsonObject = new JSONObject();
jsonObject.put("msg","hello");
jsonObject.put("msg2","world");
return jsonObject ;
}