//轉(zhuǎn)為unicode public static void writeUnicode(final DataOutputStream out, final String value) { try { final String unicode = gbEncoding( value ); final byte[] data = unicode.getBytes(); final int dataLength = data.length; System.out.println( "Data Length is: " + dataLength ); System.out.println( "Data is: " + value ); out.writeInt( dataLength ); //先寫出字符串的長度 out.write( data, 0, dataLength ); //然后寫出轉(zhuǎn)化后的字符串 } catch (IOException e) { } } public static String gbEncoding( final String gbString ) { char[] utfBytes = gbString.toCharArray(); String unicodeBytes = ""; for( int byteIndex = 0; byteIndex < utfBytes.length; byteIndex ++ ) { String hexB = Integer.toHexString( utfBytes[ byteIndex ] ); if( hexB.length() <= 2 ) { hexB = "00" + hexB; } unicodeBytes = unicodeBytes + "\\\\u" + hexB; } System.out.println( "unicodeBytes is: " + unicodeBytes ); return unicodeBytes; } /***************************************************** * 功能介紹:將unicode字符串轉(zhuǎn)為漢字 * 輸入?yún)?shù):源unicode字符串 * 輸出參數(shù):轉(zhuǎn)換后的字符串 *****************************************************/ private String decodeUnicode( final String dataStr ) { int start = 0; int end = 0; final StringBuffer buffer = new StringBuffer(); while( start > -1 ) { end = dataStr.indexOf( "\\\\u", start + 2 ); String charStr = ""; if( end == -1 ) { charStr = dataStr.substring( start + 2, dataStr.length() ); } else { charStr = dataStr.substring( start + 2, end); } char letter = (char) Integer.parseInt( charStr, 16 ); // 16進制parse整形字符串。 buffer.append( new Character( letter ).toString() ); start = end; } return buffer.toString(); } |
|