如下所示:
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和中文相互转换的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。