java中unicode和中文相互转换的简单实现

时间:2021-10-10 14:44:25

如下所示:

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