<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 56,  comments - 12,  trackbacks - 0
    UTF8轉換成GB2312 當我們在基于HTTP協議的JSP或Servlet的應用中獲取數據或發送請求時,JVM會把輸送的數據編碼成UTF8格式。如果我們直接從HTTP流中 提取中文數據,提取的結果為“????”(可能更多問號),為轉換成我們能夠理解的中文字符,我們需要把UTF8轉換成GB2312,借助ISO- 8859-1標準編碼能夠輕易的實現,下面的代碼實現了這一功能:

    byte [] b;

    String utf8_;

    utf8_ = request.getParameter("NAME");//從HTTP流中取"NAME"的UTF8數據

    b = utf8_.getBytes("8859_1"); //中間用ISO-8859-1過渡

    String name = new String(b, "GB2312"); //轉換成GB2312字符

    在 知道流長度的情況下將輸入流轉換成字節數組 Java中的輸入流抽象類InputStream有int read(byte[] b, int off, int len)方法,參數中byte[] b是用來存放從InputStream中讀取的數據,int off指定數組b的偏移地址,也就是數組b的起始下標,int len指定需要讀取的長度,方法返回實際讀取的字節數。剛學Java的朋友可能要說:先定義一個與流長度等長的字節數組,調用read方法,指定起始下標 為0,指定讀取長度與數組長度等長,不是一下子可以讀出來了嗎?說的沒錯,筆者曾經也試著這樣讀取數據,但后來發現在讀取網絡數據時很不安全,我們想想在 網絡上獲取數據可能并沒那么流暢,數據流的傳送可能會斷斷續續,所以并不能保證一次就能讀取全部數據,特別是在讀取大容量數據時更是如此,所以我們必須在 讀取數據時檢測實際讀到的長度,如果沒有讀完已知長度的數據就應該再次讀取,以此循環檢測,直到實際讀取的長度累加與已知的長度相等,下面的代碼實現了這 一功能:

    ServletInputStream inStream = request.getInputStream(); //取HTTP請求流

    int size = request.getContentLength(); //取HTTP請求流長度

    byte[] buffer = new byte[size]; //用于緩存每次讀取的數據

    byte[] in_b = new byte[size]; //用于存放結果的數組

    int count = 0;

    int rbyte = 0;

    while (count < size) { //循環讀取

    rbyte = inStream.read(buffer); //每次實際讀取長度存于rbyte中

    for(int i=0;i<rbyte;i++) {

    in_b[count + i] = buffer[i];

    }

    count += rbyte;

    }

    在 不知道流長度的情況下將輸入流轉換成字節數組 前面介紹了已知流長度的情況下的轉換方法,那么當我們不知道流有多長時,也就是說不能確定轉換后的字節數組有多大時,該怎么處理呢?筆者查看了JDK文檔 之后發現ByteArrayOutputStream有一個byte[] toByteArray()方法,該方法會自動創建一個字節數組,然后返回。于是就巧妙的用ByteArrayOutputStream來作中間過渡實現 轉換,其它處理跟上面所介紹已知長度的情況差不多。假設需要被轉換的流已經放在inStream里了,我們可以用如下的代碼實現這一功能:

    ByteArrayOutputStream swapStream = new ByteArrayOutputStream();

    byte[] buff = new byte[100]; //buff用于存放循環讀取的臨時數據

    int rc = 0;

    while ((rc = inStream.read(buff, 0, 100)) > 0) {

    swapStream.write(buff, 0, rc);

    }

    byte[] in_b = swapStream.toByteArray(); //in_b為轉換之后的結果

    posted on 2007-01-19 00:07 苦笑枯 閱讀(244) 評論(0)  編輯  收藏 所屬分類: Java
    收藏來自互聯網,僅供學習。若有侵權,請與我聯系!

    <2007年1月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(2)

    隨筆分類(56)

    隨筆檔案(56)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲性色AV日韩在线观看| 免费无码又爽又黄又刺激网站 | 亚洲综合色7777情网站777| 久久精品a一国产成人免费网站| AV激情亚洲男人的天堂国语| 亚洲香蕉网久久综合影视| 最近中文字幕2019高清免费| 亚洲AV综合永久无码精品天堂| 国产亚洲精品无码拍拍拍色欲| 69式国产真人免费视频| 日韩精品免费一线在线观看 | 亚洲最大天堂无码精品区| 亚洲精品无码99在线观看| 免费视频成人片在线观看| 国产成人亚洲精品蜜芽影院| 亚洲av日韩av天堂影片精品| 青草草在线视频永久免费| 免费一级毛片无毒不卡| 综合一区自拍亚洲综合图区| 亚洲精品线在线观看| 亚洲成A∨人片天堂网无码| 精品国产免费人成电影在线观看| 青青久久精品国产免费看 | 毛片在线全部免费观看| mm1313亚洲国产精品无码试看| 亚洲AV区无码字幕中文色| 免费一级毛片在播放视频| 日本三级2019在线观看免费| 好男人资源在线WWW免费| 亚洲日本VA午夜在线电影| 亚洲黄色中文字幕| 国产亚洲美女精品久久久2020| 大香人蕉免费视频75| 100部毛片免费全部播放完整| aa午夜免费剧场| 婷婷亚洲综合五月天小说在线 | 亚洲真人无码永久在线观看| 亚洲黄色三级网站| 亚洲国产精品成人久久| 国产精品亚洲高清一区二区| 国产成人免费全部网站|