[Java] Java实现的utf8,gbk,unicode编码相互转换的代码 →→→→→进入此内容的聊天室

来自 , 2019-08-17, 写在 Java, 查看 104 次.
URL http://www.code666.cn/view/0cbed40c
  1. public class UTF2GBK {
  2.        
  3.         public String gbk2utf8(String gbk) {
  4.                 String l_temp = GBK2Unicode(gbk);
  5.                 l_temp = unicodeToUtf8(l_temp);
  6.  
  7.                 return l_temp;
  8.         }
  9.  
  10.         public String utf82gbk(String utf) {
  11.                 String l_temp = utf8ToUnicode(utf);
  12.                 l_temp = Unicode2GBK(l_temp);
  13.  
  14.                 return l_temp;
  15.         }
  16.  
  17.         /**
  18.          *
  19.          * @param str
  20.          * @return String
  21.          */
  22.  
  23.         public static String GBK2Unicode(String str) {
  24.                 StringBuffer result = new StringBuffer();
  25.                 for (int i = 0; i < str.length(); i++) {
  26.                         char chr1 = (char) str.charAt(i);
  27.  
  28.                         if (!isNeedConvert(chr1)) {
  29.                                 result.append(chr1);
  30.                                 continue;
  31.                         }
  32.  
  33.                         result.append("\\u" + Integer.toHexString((int) chr1));
  34.                 }
  35.  
  36.                 return result.toString();
  37.         }
  38.  
  39.         /**
  40.          *
  41.          * @param dataStr
  42.          * @return String
  43.          */
  44.  
  45.         public static String Unicode2GBK(String dataStr) {
  46.                 int index = 0;
  47.                 StringBuffer buffer = new StringBuffer();
  48.  
  49.                 int li_len = dataStr.length();
  50.                 while (index < li_len) {
  51.                         if (index >= li_len - 1
  52.                                         || !"\\u".equals(dataStr.substring(index, index + 2))) {
  53.                                 buffer.append(dataStr.charAt(index));
  54.  
  55.                                 index++;
  56.                                 continue;
  57.                         }
  58.  
  59.                         String charStr = "";
  60.                         charStr = dataStr.substring(index + 2, index + 6);
  61.  
  62.                         char letter = (char) Integer.parseInt(charStr, 16);
  63.  
  64.                         buffer.append(letter);
  65.                         index += 6;
  66.                 }
  67.  
  68.                 return buffer.toString();
  69.         }
  70.  
  71.         public static boolean isNeedConvert(char para) {
  72.                 return ((para & (0x00FF)) != para);
  73.         }
  74.  
  75.         /**
  76.          * utf-8 转unicode
  77.          *
  78.          * @param inStr
  79.          * @return String
  80.          */
  81.         public static String utf8ToUnicode(String inStr) {
  82.                 char[] myBuffer = inStr.toCharArray();
  83.  
  84.                 StringBuffer sb = new StringBuffer();
  85.                 for (int i = 0; i < inStr.length(); i++) {
  86.                         UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);
  87.                         if (ub == UnicodeBlock.BASIC_LATIN) {
  88.                                 sb.append(myBuffer[i]);
  89.                         } else if (ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
  90.                                 int j = (int) myBuffer[i] - 65248;
  91.                                 sb.append((char) j);
  92.                         } else {
  93.                                 short s = (short) myBuffer[i];
  94.                                 String hexS = Integer.toHexString(s);
  95.                                 String unicode = "\\u" + hexS;
  96.                                 sb.append(unicode.toLowerCase());
  97.                         }
  98.                 }
  99.                 return sb.toString();
  100.         }
  101.  
  102.         /**
  103.          *
  104.          * @param theString
  105.          * @return String
  106.          */
  107.         public static String unicodeToUtf8(String theString) {
  108.                 char aChar;
  109.                 int len = theString.length();
  110.                 StringBuffer outBuffer = new StringBuffer(len);
  111.                 for (int x = 0; x < len;) {
  112.                         aChar = theString.charAt(x++);
  113.                         if (aChar == '\\') {
  114.                                 aChar = theString.charAt(x++);
  115.                                 if (aChar == 'u') {
  116.                                         // Read the xxxx
  117.                                         int value = 0;
  118.                                         for (int i = 0; i < 4; i++) {
  119.                                                 aChar = theString.charAt(x++);
  120.                                                 switch (aChar) {
  121.                                                 case '0':
  122.                                                 case '1':
  123.                                                 case '2':
  124.                                                 case '3':
  125.                                                 case '4':
  126.                                                 case '5':
  127.                                                 case '6':
  128.                                                 case '7':
  129.                                                 case '8':
  130.                                                 case '9':
  131.                                                         value = (value << 4) + aChar - '0';
  132.                                                         break;
  133.                                                 case 'a':
  134.                                                 case 'b':
  135.                                                 case 'c':
  136.                                                 case 'd':
  137.                                                 case 'e':
  138.                                                 case 'f':
  139.                                                         value = (value << 4) + 10 + aChar - 'a';
  140.                                                         break;
  141.                                                 case 'A':
  142.                                                 case 'B':
  143.                                                 case 'C':
  144.                                                 case 'D':
  145.                                                 case 'E':
  146.                                                 case 'F':
  147.                                                         value = (value << 4) + 10 + aChar - 'A';
  148.                                                         break;
  149.                                                 default:
  150.                                                         throw new IllegalArgumentException(
  151.                                                                         "Malformed   \\uxxxx   encoding.");
  152.                                                 }
  153.                                         }
  154.                                         outBuffer.append((char) value);
  155.                                 } else {
  156.                                         if (aChar == 't')
  157.                                                 aChar = '\t';
  158.                                         else if (aChar == 'r')
  159.                                                 aChar = '\r';
  160.                                         else if (aChar == 'n')
  161.                                                 aChar = '\n';
  162.                                         else if (aChar == 'f')
  163.                                                 aChar = '\f';
  164.                                         outBuffer.append(aChar);
  165.                                 }
  166.                         } else
  167.                                 outBuffer.append(aChar);
  168.                 }
  169.                 return outBuffer.toString();
  170.         }
  171.  
  172. }
  173. //java/5422

回复 "Java实现的utf8,gbk,unicode编码相互转换的代码"

这儿你可以回复上面这条便签

captcha