代码1返回正常,代码2返回乱码。跟自动关闭流有关系吗?

代码1返回正常,代码2返回乱码。跟自动关闭流有关系吗?

代码片段1:

        PrintWriter out = null;
        try {
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/json");
            out = response.getWriter();
            out.println("中国");
        } catch (Exception e) {
        } finally {
            if (out != null) {
                out.flush();
                out.close();
            }
        }

代码片段2:

        try (PrintWriter out = response.getWriter();) {
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/json");
            out.println("中国");
        } catch (IOException e) {
            e.printStackTrace();
        }

估计应该是先进行set操作,再getWriter才行吧。先getWriter的话,字符编码应该不是UTF-8,set以后才修改编码,但只是修改response的

楼上应该正解