響應中文的解決

    向頁面響應的方法:
    * getOutputStream();
    * getWriter();

    *** 這兩個方法是互斥的.**
        * 做出響應的時候只能使用其中的一種流響應.

    * 輸出中文亂碼的處理:
        * 字節流:
            * 設置瀏覽器默認打開的編碼:
                * resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
            * 設置中文字節取出的時候編碼.
                * “中文”.getBytes(“UTF-8”);

        * 字符流:
            * 設置瀏覽器打開的時候的編碼
                * resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
            * 設置response的緩衝區的編碼
                * response.setCharacterEncoding(“UTF-8”);

            ***** 簡化的寫法:response.setContentType(“text/html;charset=UTF-8”);


    具體代碼:
    /**
     * 向頁面做出響應的Servlet
     */


        /**
         * 使用字符流輸出中文:
         * * 有沒有亂碼?爲什麼?
         *     * 一定會亂碼.response使用的字符流有緩衝區的.
         *     * response的字符流的緩衝區的默認的編碼是ISO-8859-1.編碼根本不支持中文.
         * * 解決:
         *     * 設置response的字符流的緩衝區的編碼.
         *     * 設置瀏覽器默認打開的時候採用的字符集編碼.
         * @param response
         * @throws IOException
         */
        private void test4(HttpServletResponse response) throws IOException {
            //設置瀏覽器默認打開的時候採用的字符編碼
            //response.setHeader("Content-Type", "text/html;charset=UTF-8");
            //設置response的字符流的緩衝的編碼
            //response.setCharacterEncoding("UTF-8");

            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().println("中文啊啊");   
        }

        /**
         * 使用字節流輸出中文:
         * * 有沒有亂碼?爲什麼?
         *    * 不一定. 
         *    * 解決:
         *       * 設置中文轉成字節數組取出的時候的編碼
         *       * 設置瀏覽器默認打開的時候編碼
         */
        private void test3(HttpServletResponse response) throws UnsupportedEncodingException, IOException {
            //設置瀏覽器默認打開的時候採用的字符集編碼
            //response.setHeader("Content-Type", "text/html;charset=UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            //設置中文轉成字節數組的時候取出的編碼
            response.getOutputStream().write("中文".getBytes("UTF-8"));
        }

        /**
         * 使用字符流響應數據
         * @param response
         * @throws IOException 
         */
        private void test2(HttpServletResponse response) throws IOException {
            response.getWriter().println("Hello Writer Response....");
        }

        /**
         * 使用字節流響應數據
         * @param response
         * @throws IOException
         */
        private void test1(HttpServletResponse response) throws IOException {
            response.getOutputStream().write("Hello OutputStream Response....".getBytes());
        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章