zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0

          為了搞清楚問題,我做了如下測試:

          輸出代碼

          ? <%
          ?? ?out.println("1 - "+new String("中文".getBytes())+"<br>");

          ?? ?out.println("2 - "+new String("中文".getBytes(),"GB2312")+"<br>");
          ?? ?out.println("3 - "+new String("中文".getBytes(),"ISO8859_1")+"<br>");
          ?? ?out.println("4 - "+new String("中文".getBytes(),"UTF-8")+"<br>");
          ?? ?out.println("5 - "+new String("中文".getBytes(),"GBK")+"<br>");
          ?? ?
          ?? ?out.println("11 - "+new String("中文".getBytes("UTF-8"), "UTF-8")+"<br>");
          ?? ?out.println("12 - "+new String("中文".getBytes("UTF-8"), "GB2312")+"<br>");
          ?? ?out.println("13 - "+new String("中文".getBytes("UTF-8"), "ISO8859_1")+"<br>");
          ?? ?out.println("14 - "+new String("中文".getBytes("UTF-8"), "GBK")+"<br>");
          ?? ?
          ?? ?out.println("21 - "+new String("中文".getBytes("GBK"), "GBK")+"<br>");
          ?? ?out.println("22 - "+new String("中文".getBytes("GBK"), "UTF-8")+"<br>");
          ?? ?out.println("23 - "+new String("中文".getBytes("GBK"), "GB2312")+"<br>");
          ?? ?out.println("24 - "+new String("中文".getBytes("GBK"), "ISO8859_1")+"<br>");
          ?? ?
          ?? ?out.println("31 - "+new String("中文".getBytes("GB2312"), "GB2312")+"<br>");
          ?? ?out.println("32 - "+new String("中文".getBytes("GB2312"), "UTF-8")+"<br>");
          ?? ?out.println("33 - "+new String("中文".getBytes("GB2312"), "GBK")+"<br>");
          ?? ?out.println("34 - "+new String("中文".getBytes("GB2312"), "ISO8859_1")+"<br>");
          ?? ?
          ?? ?out.println("41 - "+new String("中文".getBytes("ISO8859_1"), "ISO8859_1")+"<br>");
          ?? ?out.println("42 - "+new String("中文".getBytes("ISO8859_1"), "UTF-8")+"<br>");
          ?? ?out.println("43 - "+new String("中文".getBytes("ISO8859_1"), "GB2312")+"<br>");
          ?? ?out.println("44 - "+new String("中文".getBytes("ISO8859_1"), "GBK")+"<br>");
          ?? %>

          [1]jsp編碼<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>

          測試結果如下:
          1 - ??
          2 - ???
          3 - 涓?枃
          4 - ??
          5 - ???
          11 - ??
          12 - ???
          13 - 涓?枃
          14 - ???
          21 - ??
          22 - ????
          23 - ??
          24 - 中文
          31 - ??
          32 - ????
          33 - ??
          34 - 中文
          41 - ??
          42 - ??
          43 - ??
          44 - ??

          [2]jsp編碼<%@ page language="java" import="java.util.*" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
          結果如下:
          1 - ??
          2 - ???
          3 - 涓?枃
          4 - ??
          5 - ???
          11 - ??
          12 - ???
          13 - 涓?枃
          14 - ???
          21 - ??
          22 - ????
          23 - ??
          24 - 中文
          31 - ??
          32 - ????
          33 - ??
          34 - 中文
          41 - ??
          42 - ??
          43 - ??
          44 - ??

          [3]jsp編碼<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>
          結果如下:
          1 - ??
          2 - ???
          3 - 涓?枃
          4 - ??
          5 - ???
          11 - ??
          12 - ???
          13 - 涓?枃
          14 - ???
          21 - ??
          22 - ????
          23 - ??
          24 - 中文
          31 - ??
          32 - ????
          33 - ??
          34 - 中文
          41 - ??
          42 - ??
          43 - ??
          44 - ??


          分析:
          通過上面的測試,我么可以知道
          [1]在jsp文件里面的"中文"的編碼是和jsp文件的編碼相一致的。
          也就是說,
          如果pageEncoding="GBK",那么"中文"的編碼就是GBK編碼
          如果pageEncoding="UTF-8",那么"中文"的編碼就是UTF-8編碼
          如果pageEncoding="GB2312",那么"中文"的編碼就是GB2312編碼

          [2]要想輸出不亂碼,必須要轉成ISO8859_1編碼
          如果要輸出一個中文字符串aa不亂碼,你就要把aa轉成ISO8859_1編碼。
          但是,你要知道aa的編碼,
          如果aa是GBK,那么就用new String(aa.getBytes("GBK"),"ISO8859_1")或者new String(aa.getBytes("GB2312"),"ISO8859_1")
          如果aa是UTF-8,那么就用new String(aa.getBytes(),"ISO8859_1")或者new String(aa.getBytes("UTF-8"),"ISO8859_1")
          如果aa是GBK2312那么就用new String(aa.getBytes("GB2312"),"ISO8859_1")或者new String(aa.getBytes("GBK"),"ISO8859_1")

          然后再輸出就不會有亂碼











          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2009-02-04 10:42 zhyiwww 閱讀(2349) 評論(0)  編輯  收藏 所屬分類: j2ee
          主站蜘蛛池模板: 甘孜| 大埔区| 平潭县| 会宁县| 普定县| 搜索| 德州市| 新田县| 教育| 屏东市| 长兴县| 德保县| 新野县| 潜江市| 灵璧县| 博白县| 滨州市| 彰武县| 视频| 麻栗坡县| 行唐县| 津市市| 万载县| 博野县| 龙陵县| 东乌珠穆沁旗| 秦皇岛市| 肃北| 塔城市| 桐庐县| 金昌市| 临湘市| 西城区| 周宁县| 安化县| 姚安县| 关岭| 清原| 乡宁县| 延吉市| 建宁县|