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 閱讀(2345) 評論(0)  編輯  收藏 所屬分類: j2ee
          主站蜘蛛池模板: 壶关县| 贵定县| 彰化市| 偏关县| 梧州市| 涪陵区| 华阴市| 内江市| 潍坊市| 海阳市| 荃湾区| 榕江县| 清流县| 府谷县| 潮安县| 安图县| 锡林浩特市| 潜江市| 百色市| 吉林省| 远安县| 临西县| 汉阴县| 望都县| 宁都县| 宜宾市| 云和县| 翁源县| 仁寿县| 礼泉县| 西昌市| 个旧市| 郁南县| 汤阴县| 夹江县| 杭州市| 棋牌| 六枝特区| 北海市| 湖州市| 瓦房店市|