今天在做一个新浪微博的抓取测试,发现抓取后的内容是Unicode编码的,完全找不到熟悉的汉字了,下面搜索出来的一种方法,完全可行,只是不知到Java内部是否提供了相关的类库。

实现方法如下:

  public static String fromEncodedUnicode(char[] in, int off, int len) {

         char aChar;

         char[] out = new char[len]; 

         int outLen = 0;

         int end = off + len;

         while (off < end) {

             aChar = in[off++];

             if (aChar == '\\') {

                 aChar = in[off++];

                 if (aChar == 'u') {

                     // Read the xxxx

                     int value = 0;

                     for (int i = 0; i < 4; i++) {

                         aChar = in[off++];

                         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.");

                         }

                     }

                     out[outLen++] = (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';

                     }

                     out[outLen++] = aChar;

                 }

             } else {

                 out[outLen++] = (char) aChar;

             }

         }

         return new String(out, 0, outLen);

     }

在 Java 中将 Unicode 编码的汉字转码的更多相关文章

  1. Java与编码问题串讲之二–如何理解java采用Unicode编码

    Java开发者必须牢记:在Java中字符仅以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一方法).由于java采用unicode编码,char  ...

  2. 如何理解java采用Unicode编码

    http://blog.csdn.net/gjb724332682/article/details/43229563 Java中字符仅以一种形式存在,那就是Unicode.由于java采用unicod ...

  3. java测试Unicode编码以及数组的运用(初学篇)

    /*第二章第四小题*/ /* * (1)编写一个应用程序,给出汉字“你” ,“我”,“他”在Unicode 表中的位置 * (2)编写一个java应用程序,输出全部的希腊字母 */ public cl ...

  4. java中unicode utf-8以及汉字之间的转换工具类

    1.       汉字字符串与unicode之间的转换 1.1          stringToUnicode /** * 获取字符串的unicode编码 * 汉字"木"的Uni ...

  5. python2中将Unicode编码的中文和str相互转换

    在python2x版本中 关于中文汉字转换 1.中文------字符串格式 >>> s = '汉字' >>> type(s) <type 'str'> ...

  6. jmeter响应数据Unicode编码转换为汉字

    2018-07-09     10:24:34 每次用jmeter做接口测试时,响应信息中文总是显示Unicode编码格式,每次都要在网上寻找这一段转换的代码,但是我发现在网上找这段代码有点麻烦,像我 ...

  7. JAVA转化Unicode编码

    package yyl.example.basic.codec; import java.util.Locale; import java.util.regex.Matcher; import jav ...

  8. Unicode编码转换汉字

    Uri.UnescapeDataString(string) #region Unicode转换汉字 Console.WriteLine(Uri.UnescapeDataString("\u ...

  9. unicode编码转汉字

    String hexB = Integer.toHexString(utfBytes[byteIndex]);   //转换为16进制整型字符串 if (hexB.length() <= 2)  ...

随机推荐

  1. Codeforces Gym 100338I TV Show 傻逼DFS,傻逼题

    Problem I. TV ShowTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ...

  2. Android Studio升级后projectBuild failed.

    近期在升级Android Studio后,发现原先能编译通过的project,突然就编译只是了,原因是生成的AndroidManifest.xml文件里有乱码. 升级后: android studio ...

  3. Android Socket编程学习笔记

    http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...

  4. MySQL Cluster2个数据节点压力测试--mysqlslap工具压400W写

    锅巴哥的个人建议:cluster叫电信运营商版本,所以基本上在很大的用户并发量的情况下才会用到,对连接数的线性增长要求高的场景,千兆就不用想了, 没万兆就不用玩了. 很不幸,我的就是千兆网络,我的数据 ...

  5. Python integer objects implementation

    http://www.laurentluce.com/posts/python-integer-objects-implementation/ Python integer objects imple ...

  6. php上传常见文件类型对应的$_FILES["file"]["type"](转)

    php上传常见文件类型对应的$_FILES["file"]["type"] from:http://hi.baidu.com/7book/item/374971 ...

  7. 实例源码--Android自定义Gallery动画效果

    相关文档与源码: 下载源码   技术要点: 1.自定义控件的使用 2.Gallery控件的使用实例 3.详细的源码注释 ...... 详细介绍: 1.自定义控件的使用 本套源码通过自定义控件的方式,继 ...

  8. js中常用属性备忘

    . onsubmit一般用来做验证的,用来控制表单提交的. 之前使用数据提交基本上使用ajax做数据提交,在数据验证的时候,只有通过数据验证之后,才会post/get数据到对应api文件,但是这次涉及 ...

  9. 面试常备题---二叉树总结篇(zt)

    人生就像是一场长跑,有很多机会,但也得看我们是否能够及时抓牢,就像下面这样的代码: while(isRunning) { if(...){...} else if(...){...} ... else ...

  10. cocos2d-x调度器原理

    程序运行后每达到一帧的时间间隔就会执行一次mainLoop void CCDisplayLinkDirector::mainLoop(void) { //判断是否需要释放CCDirector,通常游戏 ...