java实现unicode的解码

本文介绍了一个将Unicode编码的字符串解码为普通字符串的方法,通过遍历输入字符串并判断字符是否为转义序列来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值