java Unicode和中文互转

来源:互联网 发布:刘嘉玲绑架事件知乎 编辑:程序博客网 时间:2024/04/29 02:14

1.中文转Unicode

public static String encodeUnicode(String str){          String result="";          for (int i = 0; i < str.length(); i++){              int chr1 = (char) str.charAt(i);              if(chr1>=19968&&chr1<=171941){//汉字范围 \u4e00-\u9fa5 (中文)                  result+="\\u" + Integer.toHexString(chr1);              }else{                  result+=str.charAt(i);              }          }          return result;      }  


2.Unicode转中文

public static String decodeUnicode(String str) {    char aChar;    int len = str.length();    StringBuffer outBuffer = new StringBuffer(len);    for (int x = 0; x < len;) {      aChar = str.charAt(x++);      if (aChar == '\\') {        aChar = str.charAt(x++);        if (aChar == 'u') {          // Read the xxxx          int value = 0;          for (int i = 0; i < 4; i++) {            aChar = str.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 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();  }



0 0