码迷,mamicode.com
首页 > 其他好文 > 详细

续上文,中的\\u00a0是怎么解释出来的

时间:2018-04-04 14:49:33      阅读:1136      评论:0      收藏:0      [点我收藏+]

标签:coding   for   bre   AC   stringbu   int   malformed   blog   汉字   

 


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

  以上是utf8转换成unicode的方法

  同样有一种反过来的:

  

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);
          }//end for
          return outBuffer.toString();
    }

 

续上文,中的\\u00a0是怎么解释出来的

标签:coding   for   bre   AC   stringbu   int   malformed   blog   汉字   

原文地址:https://www.cnblogs.com/lxl-six/p/8716340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!