java中unicode和中文相互转换

来源:互联网 发布:rar文件变成网页mac 编辑:程序博客网 时间:2024/05/22 01:38
  1. package test.com.gjob.services;  
  2.    import java.util.Properties;  
  3.     public class Test {   
  4.            public static void main(String[] args) {   
  5.            String s = "简介";   
  6.           String tt = gbEncoding(s);   
  7.    //       String tt1 = "你好,我想给你说一个事情";  
  8.           System.out.println(decodeUnicode("\\u7b80\\u4ecb"));   
  9.    //       System.out.println(decodeUnicode(tt1));   
  10.           System.out.println(HTMLDecoder.decode("中国"));  
  11.           String s1 = "\u7b80\u4ecb";  
  12.           System.out.println(s.indexOf("\\"));  
  13.          }   
  14.         public static String gbEncoding(final String gbString) {   
  15.         char[] utfBytes = gbString.toCharArray();   
  16.               String unicodeBytes = "";   
  17.                for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {   
  18.                     String hexB = Integer.toHexString(utfBytes[byteIndex]);   
  19.                       if (hexB.length() <= 2) {   
  20.                           hexB = "00" + hexB;   
  21.                      }   
  22.                       unicodeBytes = unicodeBytes + "\\u" + hexB;   
  23.                   }   
  24.                   System.out.println("unicodeBytes is: " + unicodeBytes);   
  25.                   return unicodeBytes;   
  26.              }   
  27.             
  28.             public static String decodeUnicode(final String dataStr) {   
  29.                int start = 0;   
  30.                  int end = 0;   
  31.                 final StringBuffer buffer = new StringBuffer();   
  32.                  while (start > -1) {   
  33.                     end = dataStr.indexOf("\\u", start + 2);   
  34.                      String charStr = "";   
  35.                      if (end == -1) {   
  36.                          charStr = dataStr.substring(start + 2, dataStr.length());   
  37.                     } else {   
  38.                         charStr = dataStr.substring(start + 2, end);   
  39.                      }   
  40.                      char letter = (char) Integer.parseInt(charStr, 16); // 16进制parse整形字符串。   
  41.                    buffer.append(new Character(letter).toString());   
  42.                    start = end;   
  43.                  }   
  44.                  return buffer.toString();   
  45.              }   
  46.          }   

unicode转换成中文

[java] view plain copy
  1. public static String decodeUnicode(String theString) {      
  2.    
  3.     char aChar;      
  4.    
  5.      int len = theString.length();      
  6.    
  7.     StringBuffer outBuffer = new StringBuffer(len);      
  8.    
  9.     for (int x = 0; x < len;) {      
  10.    
  11.      aChar = theString.charAt(x++);      
  12.    
  13.      if (aChar == '\\') {      
  14.    
  15.       aChar = theString.charAt(x++);      
  16.    
  17.       if (aChar == 'u') {      
  18.    
  19.        // Read the xxxx      
  20.    
  21.        int value = 0;      
  22.    
  23.        for (int i = 0; i < 4; i++) {      
  24.    
  25.         aChar = theString.charAt(x++);      
  26.    
  27.         switch (aChar) {      
  28.    
  29.         case '0':      
  30.    
  31.         case '1':      
  32.    
  33.         case '2':      
  34.    
  35.         case '3':      
  36.    
  37.        case '4':      
  38.    
  39.         case '5':      
  40.    
  41.          case '6':      
  42.           case '7':      
  43.           case '8':      
  44.           case '9':      
  45.            value = (value << 4) + aChar - '0';      
  46.            break;      
  47.           case 'a':      
  48.           case 'b':      
  49.           case 'c':      
  50.           case 'd':      
  51.           case 'e':      
  52.           case 'f':      
  53.            value = (value << 4) + 10 + aChar - 'a';      
  54.           break;      
  55.           case 'A':      
  56.           case 'B':      
  57.           case 'C':      
  58.           case 'D':      
  59.           case 'E':      
  60.           case 'F':      
  61.            value = (value << 4) + 10 + aChar - 'A';      
  62.            break;      
  63.           default:      
  64.            throw new IllegalArgumentException(      
  65.              "Malformed   \\uxxxx   encoding.");      
  66.           }      
  67.    
  68.         }      
  69.          outBuffer.append((char) value);      
  70.         } else {      
  71.          if (aChar == 't')      
  72.           aChar = '\t';      
  73.          else if (aChar == 'r')      
  74.           aChar = '\r';      
  75.    
  76.          else if (aChar == 'n')      
  77.    
  78.           aChar = '\n';      
  79.    
  80.          else if (aChar == 'f')      
  81.    
  82.           aChar = '\f';      
  83.    
  84.          outBuffer.append(aChar);      
  85.    
  86.         }      
  87.    
  88.        } else     
  89.    
  90.        outBuffer.append(aChar);      
  91.    
  92.       }      
  93.    
  94.       return outBuffer.toString();      
  95.    
  96.      }     
0 0
原创粉丝点击