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

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

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

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    漢字與 unicode 編碼相互轉化(轉)

    漢字與 unicode 編碼相互轉化

    (2006年7月17日? 11:07:58 )

    一、???????????? 概述:

    ?????? 如果項目采用了 GBK 的編碼,那么漢字轉化就不是問題了。但是如果采用了 utf-8 的編碼,漢字的處理就相對比較麻煩一些。

    二、???????????? 功能實現:

    ??????

    代碼如下:

    ?

    ?1 ???? // ?轉為unicode
    ?2 ???? public ? static ? void ?writeUnicode( final ?DataOutputStream?out,
    ?3 ???????????? final ?String?value)? {
    ?4 ???????? try ? {
    ?5 ???????????? final ?String?unicode? = ?gbEncoding(value);
    ?6 ???????????? final ? byte []?data? = ?unicode.getBytes();
    ?7 ???????????? final ? int ?dataLength? = ?data.length;
    ?8
    ?9 ????????????System.out.println( " Data?Length?is:? " ? + ?dataLength);
    10 ????????????System.out.println( " Data?is:? " ? + ?value);
    11 ????????????out.writeInt(dataLength);? // ?先寫出字符串的長度
    12 ????????????out.write(data,? 0 ,?dataLength);? // ?然后寫出轉化后的字符串
    13 ????????}
    ? catch ?(IOException?e)? {
    14
    15 ????????}

    16 ????}

    17
    18 ???? public ? static ?String?gbEncoding( final ?String?gbString)? {
    19 ???????? char []?utfBytes? = ?gbString.toCharArray();
    20 ????????String?unicodeBytes? = ? "" ;
    21 ???????? for ?( int ?byteIndex? = ? 0 ;?byteIndex? < ?utfBytes.length;?byteIndex ++ )? {
    22 ????????????String?hexB? = ?Integer.toHexString(utfBytes[byteIndex]);
    23 ???????????? if ?(hexB.length()? <= ? 2 )? {
    24 ????????????????hexB? = ? " 00 " ? + ?hexB;
    25 ????????????}

    26 ????????????unicodeBytes? = ?unicodeBytes? + ? " \\u " ? + ?hexB;
    27 ????????}

    28 ???????? // ?System.out.println("unicodeBytes?is:?"?+?unicodeBytes);
    29 ???????? return ?unicodeBytes;
    30 ????}

    31
    32 ???? /**
    33 ?????*?This?method?will?decode?the?String?to?a?recognized?String?in?ui.
    34 ?????*?功能:將unicod碼轉為需要的格式(utf-8)
    35 ?????*? @author ?javajohn
    36 ?????*? @param ?dataStr
    37 ?????*? @return
    38 ????? */

    39 ???? public ? static ?StringBuffer?decodeUnicode( final ?String?dataStr)? {
    40 ???????? final ?StringBuffer?buffer? = ? new ?StringBuffer();
    41 ????????String?tempStr? = ? "" ;
    42 ????????String?operStr? = ?dataStr;
    43 ???????? if (operStr? != ? null ? && ?operStr.indexOf( " \\u " )? == ? - 1 )? return ?buffer.append(operStr); //
    44 ???????? if (operStr? != ? null ? && ? ! operStr.equals( "" )? && ? ! operStr.startsWith( " \\u " )) { //
    45 ????????????tempStr? = ?operStr.substring( 0 ,operStr.indexOf( " \\u " )); //?
    46????????????operStr?=?operStr.substring(operStr.indexOf("\\u"),operStr.length());//operStr字符一定是以unicode編碼字符打頭的字符串
    47????????}

    48 ????????buffer.append(tempStr);
    49 ???????? while ?(operStr? != ? null ? && ? ! operStr.equals( "" )? && ?operStr.startsWith( " \\u " )) { // 循環處理,處理對象一定是以unicode編碼字符打頭的字符串
    50 ????????????tempStr? = ?operStr.substring( 0 , 6 );
    51 ????????????operStr? = ?operStr.substring( 6 ,operStr.length());
    52 ????????????String?charStr? = ? "" ;
    53 ????????????charStr? = ?tempStr.substring( 2 ,?tempStr.length());
    54 ???????????? char ?letter? = ?( char )?Integer.parseInt(charStr,? 16 );? // ?16進制parse整形字符串。
    55 ????????????buffer.append( new ?Character(letter).toString());
    56 ???????????? if (operStr.indexOf( " \\u " )? == ? - 1 ) { //?
    57????????????????buffer.append(operStr);
    58????????????}
    else { // 處理operStr使其打頭字符為unicode字符
    59 ????????????????tempStr? = ?operStr.substring( 0 ,operStr.indexOf( " \\u " ));
    60 ????????????????operStr? = ?operStr.substring(operStr.indexOf( " \\u " ),operStr.length());
    61 ????????????????buffer.append(tempStr);
    62 ????????????}

    63 ????????}

    64 ???????? return ?buffer;
    65 ????}

    一、???????????? 結尾:

    posted on 2006-07-17 11:07 javajohn 閱讀(673) 評論(1) ?編輯?收藏收藏至365Key 所屬分類: 我的記憶

    FeedBack:
    #?re: 漢字(中文)還是unicode
    2006-07-18 17:11 | 小豬
    關于代碼單元和代碼點的理解:
    1、一個代碼點可能包含一個或兩個代碼單元。
    2、在我的測試程序中,“我 ”也只占用一個代碼單元。即代碼點數等于代碼單元數。
    下面是在unicode的官方網站上找到的關于unicode的中文,韓文,日文的一些說明:
    Q: I have heard that UTF-8 does not support some Japanese characters. Is this correct?

    A: There is a lot of misinformation floating around about the support of Chinese, Japanese and Korean (CJK) characters. The Unicode Standard supports all of the CJK characters from JIS X 0208, JIS X 0212, JIS X 0221, or JIS X 0213, for example, and many more. This is true no matter which encoding form of Unicode is used: UTF-8, UTF-16, or UTF-32.

    Unicode supports over 70,000 CJK characters right now, and work is underway to encode further additions. The International Standard ISO/IEC 10646 and the Unicode Standard are completely synchronized in repertoire and content. And that means that Unicode has the same repertoire as GB 18030, since that also is synchronized with ISO 10646 — although with a different ordering and byte format.
    無論是那個編碼方式(UTF-8, UTF-16, or UTF-32)都可以對中文全面支持?


    我的測試程序如下:
    public class test0 {
    public static void main(String[] args)
    {String a="我 ";
    int cuCount=a.length();
    System.out.println("the number of code units required for string \"test\" in the UTF-16 encoding is "+cuCount);
    int cpCount=a.codePointCount(0, a.length());
    System.out.println("the number of code points is "+cpCount);
    System.out.println("the end of string \"我 \" is "+a.charAt(a.length()-1));

    }

    }

    輸出結果為:
    the number of code units required for string "test" in the UTF-16 encoding is 2
    the number of code points is 2
    the end of string "我 " is [空格]

    在eclipse里面找到了set encoding選項,在里面可以設置編碼方式。??

    posted on 2006-07-21 01:46 liaojiyong 閱讀(4349) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: jizz18免费视频| 国产亚洲综合视频| 久久久久免费看黄a级试看| 亚洲成?v人片天堂网无码| 亚洲精品国产av成拍色拍| 在线观看成人免费| 学生妹亚洲一区二区| 成年男女男精品免费视频网站| 精品国产成人亚洲午夜福利| 性色av无码免费一区二区三区| 亚洲精品国产suv一区88| 免费一级毛片在级播放| 一级毛片完整版免费播放一区| 国产精品亚洲视频| 久艹视频在线免费观看| 亚洲视频小说图片| 成人免费看黄20分钟| 国产天堂亚洲国产碰碰| 国产亚洲?V无码?V男人的天堂| 免费看无码特级毛片| 亚洲精品福利网站| 青青草国产免费久久久下载| 免费人成在线观看播放a| 亚洲精品无码久久千人斩| 日韩免费无码视频一区二区三区| 亚洲国产av高清无码| 国产嫩草影院精品免费网址| 精品国产污污免费网站入口| 亚洲韩国精品无码一区二区三区 | 亚洲人成网站在线在线观看| 国产免费观看网站| 好久久免费视频高清| 亚洲国产日韩在线| 亚洲精品天堂成人片?V在线播放| 人人玩人人添人人澡免费| 亚洲中文无码永久免费| 亚洲色偷偷综合亚洲AV伊人| 国产免费观看黄AV片 | 老司机亚洲精品影院| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 美女视频黄频a免费大全视频|