zoukankan      html  css  js  c++  java
  • java中unicode和中文相互转换

     
    平时开发中,经常遇到中文转换成中文转换成Unicode编码和Unicode编码转换成中文的问题,国际化的时候,也要遇到这个问题,

    现在我就把中网上找的很自己学习的经验,共享给大家了。闲话少说,步入正题,

    Java代码如下:

    [java] view plain copy
     
    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 = "u7b80u4ecb";  
    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 = ' ';      
    73.          else if (aChar == 'r')      
    74.           aChar = ' ';      
    75.    
    76.          else if (aChar == 'n')      
    77.    
    78.           aChar = ' ';      
    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.      }     
  • 相关阅读:
    jni ndk 入门
    Activity 四种启动模式
    广播接收者 BroadcastReceiver
    android 焦点 ListView 点击事件获取失败
    android 动画效果
    JAVA 配置
    python 1:列表和字典
    poj1595 水题
    hdu 1181 深搜
    poj3264 划分树
  • 原文地址:https://www.cnblogs.com/apache-x/p/5498728.html
Copyright © 2011-2022 走看看