• java中unicode和中文相互转换


     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 = "u7b80u4ecb";
               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 = '	';    
              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();    
      
          }   
  • 相关阅读:
    代码的完整性:调整数组顺序使奇数位于偶数前面
    《Java编程思想》笔记 第十一章 持有对象
    《Java编程思想》笔记 第十章 内部类
    《Java编程思想》笔记 第九章 接口
    《Java编程思想》笔记 第八章 多态
    《Java编程思想》笔记 第七章 复用类
    《Java编程思想》笔记 第六章 访问权限控制
    《Java编程思想》笔记 第五章 初始化与清理
    Java 的初始化顺序
    《Java编程思想》笔记 第四章 控制执行流程
  • 原文地址:https://www.cnblogs.com/gengaixue/p/5189323.html
Copyright © 2020-2023  润新知