zoukankan      html  css  js  c++  java
  • java Unicode和UTF-8之间转换

    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 = '	';
         else if (aChar == 'r')
          aChar = '
    ';
         else if (aChar == 'n')
          aChar = '
    ';
         else if (aChar == 'f')
          aChar = 'f';
         outBuffer.append(aChar);
        }
       } else
        outBuffer.append(aChar);
      }
      return outBuffer.toString();
     }
  • 相关阅读:
    遥远的国度(D12 树链剖分)
    Codechef DGCD Dynamic GCD(D12 树上GCD)
    html总结
    数据库大总结
    html笔记
    Linux常用快捷键
    进程
    多进程
    进程介绍
    网络并发
  • 原文地址:https://www.cnblogs.com/weibanggang/p/11491199.html
Copyright © 2011-2022 走看看