IT源码网

java Unicode和UTF-8之间转换

itxm 2021年02月13日 编程语言 371 0

utf-8转unicode

 public static String utf8ToUnicode(String inStr) { 
        char[] myBuffer = inStr.toCharArray(); 
         
        StringBuffer sb = new StringBuffer(); 
        for (int i = 0; i < inStr.length(); i++) { 
         UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]); 
            if(ub == UnicodeBlock.BASIC_LATIN){ 
             //英文及数字等 
             sb.append(myBuffer[i]); 
            }else if(ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){ 
             //全角半角字符 
             int j = (int) myBuffer[i] - 65248; 
             sb.append((char)j); 
            }else{ 
             //汉字 
             short s = (short) myBuffer[i]; 
                String hexS = Integer.toHexString(s); 
                String unicode = "\\u"+hexS; 
             sb.append(unicode.toLowerCase()); 
            } 
        } 
        return sb.toString(); 
    }

unicode转utf-8

public static String unicodeToUtf8(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(); 
 }

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

linux配置环境jdk