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

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

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

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    URL中漢字和utf編碼轉換

    URL中漢字和utf編碼轉換

    前面幾章中,我們發表了一些關于URL傳遞參數,如果是中文的時候,亂碼的解決辦法。
     1.解決ajax提交中文、URL中文參數傳遞后的亂碼問題的解決辦法
     2.JAVA 中URL鏈接中文參數亂碼的處理方法
     3.JAVA URL中帶有中文時的處理

     今天我們所說的中文,沒有在url后面的參數中,如果中文在url中間,那如果我要處理,該怎么辦呢?
     呵呵,不著急,我們照樣可以處理:跟我來,照著做就是了

    Java代碼如下:
    package com.gjob.common;

    public class URLtoUTF8 {
        //轉換為%E4%BD%A0形式
        public static String toUtf8String(String s) {
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (c >= 0 && c <= 255) {
                    sb.append(c);
                } else {
                    byte[] b;
                    try {
                        b = String.valueOf(c).getBytes("utf-8");
                    } catch (Exception ex) {
                        System.out.println(ex);
                        b = new byte[0];
                    }
                    for (int j = 0; j < b.length; j++) {
                        int k = b[j];
                        if (k < 0)
                            k += 256;
                        sb.append("%" + Integer.toHexString(k).toUpperCase());
                    }
                }
            }
            return sb.toString();
        }

        //將%E4%BD%A0轉換為漢字
        public static String unescape(String s) {
            StringBuffer sbuf = new StringBuffer();
            int l = s.length();
            int ch = -1;
            int b, sumb = 0;
            for (int i = 0, more = -1; i < l; i++) {
                /* Get next byte b from URL segment s */
                switch (ch = s.charAt(i)) {
                case '%':
                    ch = s.charAt(++i);
                    int hb = (Character.isDigit((char) ch) ? ch - '0'
                            : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;
                    ch = s.charAt(++i);
                    int lb = (Character.isDigit((char) ch) ? ch - '0'
                            : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;
                    b = (hb << 4) | lb;
                    break;
                case '+':
                    b = ' ';
                    break;
                default:
                    b = ch;
                }
                /* Decode byte b as UTF-8, sumb collects incomplete chars */
                if ((b & 0xc0) == 0x80) { // 10xxxxxx (continuation byte)   
                    sumb = (sumb << 6) | (b & 0x3f); // Add 6 bits to sumb   
                    if (--more == 0)
                        sbuf.append((char) sumb); // Add char to sbuf   
                } else if ((b & 0x80) == 0x00) { // 0xxxxxxx (yields 7 bits)   
                    sbuf.append((char) b); // Store in sbuf   
                } else if ((b & 0xe0) == 0xc0) { // 110xxxxx (yields 5 bits)   
                    sumb = b & 0x1f;
                    more = 1; // Expect 1 more byte   
                } else if ((b & 0xf0) == 0xe0) { // 1110xxxx (yields 4 bits)   
                    sumb = b & 0x0f;
                    more = 2; // Expect 2 more bytes   
                } else if ((b & 0xf8) == 0xf0) { // 11110xxx (yields 3 bits)   
                    sumb = b & 0x07;
                    more = 3; // Expect 3 more bytes   
                } else if ((b & 0xfc) == 0xf8) { // 111110xx (yields 2 bits)   
                    sumb = b & 0x03;
                    more = 4; // Expect 4 more bytes   
                } else /*if ((b & 0xfe) == 0xfc)*/{ // 1111110x (yields 1 bit)   
                    sumb = b & 0x01;
                    more = 5; // Expect 5 more bytes   
                }
                /* We don't test if the UTF-8 encoding is well-formed */
            }
            return sbuf.toString();
        }
        
        public static void main(String[] args){
            System.out.println(URLtoUTF8.toUtf8String("你"));
            System.out.println(URLtoUTF8.unescape("%E4%BD%A0%20%E5%A5%BD"));
            
        }
    }

    ############
    運行結果:

    %E4%BD%A0
    你 好


    呵呵,是不是很簡單啊, 文章來源:http://www.javaly.cn/javahome/java/content.detail/URL%E4%B8%AD%E6%B1%89%E5%AD%97%E5%92%8Cutf%E7%BC%96%E7%A0%81%E8%BD%AC%E6%8D%A2/fdc1ed6c22069c56012282d63f7f046c.faces

    posted on 2009-07-16 17:14 找個美女做老婆 閱讀(5120) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品日韩亚洲AV无码一区二区三区 | 国产乱子伦精品免费女| 亚洲综合免费视频| 热re99久久6国产精品免费| 久久香蕉国产线看观看亚洲片| 日韩精品无码免费专区网站| 亚洲精品中文字幕乱码三区 | 日本黄页网址在线看免费不卡 | 日韩成全视频观看免费观看高清| 亚洲中文无码a∨在线观看| 57pao一国产成视频永久免费 | 亚洲va久久久噜噜噜久久天堂| 热99RE久久精品这里都是精品免费 | 四虎成人精品永久免费AV| 久久精品国产亚洲av麻豆| 在线观看永久免费| 亚洲一区在线免费观看| 无限动漫网在线观看免费| 亚洲AV无码国产精品永久一区| 一区二区三区亚洲视频| 国产精品综合专区中文字幕免费播放| 亚洲熟女少妇一区二区| 无码人妻精品中文字幕免费| 亚洲AV无码久久久久网站蜜桃| 在线jyzzjyzz免费视频| 激情吃奶吻胸免费视频xxxx| 亚洲午夜福利717| 亚洲高清免费在线观看| 亚洲AV无码一区二区一二区| 亚洲日产无码中文字幕| 69视频在线观看免费| 亚洲色大情网站www| 亚洲男女内射在线播放| 在线人成精品免费视频| 亚洲av中文无码乱人伦在线观看 | 国产亚洲综合久久系列| 一级女人18毛片免费| 日韩大片免费观看视频播放| 久久夜色精品国产嚕嚕亚洲av| 日韩av无码成人无码免费| 一级成人生活片免费看|