首页 > 编程 > Java > 正文

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

2019-11-26 13:55:44
字体:
来源:转载
供稿:网友

如下所示:

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表