UnicodeのUTF-8のrpm
パブリック 静的文字列utf8ToUnicode(文字列INSTR){ 文字 [] myBuffer = inStr.toCharArray()。 StringBufferのSB = 新しいStringBufferを(); 以下のために(int型 i = 0 ; iはinStr.length()<; I ++のを){ UnicodeBlockのUB = UnicodeBlock.of(myBuffer [I])。 もし(UB == UnicodeBlock.BASIC_LATIN){ // 英文及数字等 sb.append(myBuffer [I])。 } そう であれば(UB == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){ //全角半角字符 INT J =(INT)myBuffer [I] - 65248 。 sb.append((CHAR )J)。 } 他{ // 汉字 短いのS =(ショート)myBuffer [I]。 ストリングhexS = Integer.toHexString(S)。 文字列のUnicode = " \\ U " + hexS。 sb.append(unicode.toLowerCase())。 } } を返す)(sb.toStringします。 }
UnicodeのターンUTF-8
パブリック 静的文字列unicodeToUtf8(文字列theString){ チャーACHAR。 INT LEN = theString.length()。 StringBufferのoutBuffer = 新しいStringBufferの(LEN); 用(INT X = 0; X < LEN;){ ACHAR = theString.charAt(x ++ )。 もし(ACHAR == '\\' ){ ACHAR = theString.charAt(x ++ )。 もし(ACHAR == 'U' ){ // 読むXXXXの int型値= 0 。 以下のために(int型 I 0 =;私は4 <; I ++){ ACHAR = theString.charAt(x ++ )。 スイッチ(ACHAR){ ケース '0' : 場合 '1' : ケース '2' : ケース '3' : ケース '4' : ケース '5' : ケース '6' : ケース '7' : ケース '8' : ケース '9' : 値 =(値<< 4)+ ACHAR - '0' 。 破ります; : ケース 'B' : ケース 'C' : ケース 'D' : ケース 'E' : ケース 'F' : 値 =(値<< 4)+ 10 + ACHAR - 'A' 。 破ります; ケース 'A' : ケース 'B' : ケース 'C' : ケース 'D' : ケース 'E' : ケース 'F' : 値 =(値<< 4)+ 10 + ACHAR - 'A' 。 ブレーク; デフォルト: スロー 新しいIllegalArgumentExceptionが( "不正な形式の\\ uXXXXというエンコーディングを。" ); } } outBuffer.append((CHAR )値)。 } 他{ 場合(ACHAR == 'T' ) ACHAR = '\ tの' ; それ以外の 場合(ACHAR == 'R' ) ACHAR = '\ r'が、 それ以外の 場合(ACHAR == 'N' ) ACHAR = '\ n'は、 それ以外の 場合(ACHAR == 'F' ACHAR = '\のF' ; outBuffer.append(ACHAR)。 } } そう outBuffer.append(ACHAR)。 } を返す)(outBuffer.toString。 }