如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package test.com.gjob.services;
import java.util.Properties;
public class Test {
public static void main(String[] args) {
String s = "简介" ;
String tt = gbEncoding(s);
// String tt1 = "你好,我想给你说一个事情";
System.out.println(decodeUnicode( "\\u7b80\\u4ecb" ));
// System.out.println(decodeUnicode(tt1));
System.out.println(HTMLDecoder.decode( "中国" ));
String s1 = "\u7b80\u4ecb" ;
System.out.println(s.indexOf( "\\" ));
}
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;
}
public static 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();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
public static String decodeUnicode(String theString) {
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);
for ( int x = 0 ; x < len;) {
aChar = theString.charAt(x++);
if (aChar == '\\' ) {
aChar = theString.charAt(x++);
if (aChar == 'u' ) {
// Read the xxxx
int value = 0 ;
for ( int i = 0 ; i < 4 ; i++) {
aChar = theString.charAt(x++);
switch (aChar) {
case '0' :
case '1' :
case '2' :
case '3' :
case '4' :
case '5' :
case '6' :
case '7' :
case '8' :
case '9' :
value = (value << 4 ) + aChar - '0' ;
break ;
case 'a' :
case 'b' :
case 'c' :
case 'd' :
case 'e' :
case 'f' :
value = (value << 4 ) + 10 + aChar - 'a' ;
break ;
case 'A' :
case 'B' :
case 'C' :
case 'D' :
case 'E' :
case 'F' :
value = (value << 4 ) + 10 + aChar - 'A' ;
break ;
default :
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding." );
}
}
outBuffer.append(( char ) value);
} else {
if (aChar == 't' )
aChar = '\t' ;
else if (aChar == 'r' )
aChar = '\r' ;
else if (aChar == 'n' )
aChar = '\n' ;
else if (aChar == 'f' )
aChar = '\f' ;
outBuffer.append(aChar);
}
} else
outBuffer.append(aChar);
}
return outBuffer.toString();
}
|
以上这篇java中unicode和中文相互转换的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。