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

前端技术 2023/09/03 Java

如下所示:

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

本文地址:https://www.stayed.cn/item/8498

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。