1. 程式人生 > >json在後臺封裝後,返回中文亂碼

json在後臺封裝後,返回中文亂碼

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 ;

    }