今天在做一个新浪微博的抓取测试,发现抓取后的内容是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. insertion sort

    1.insertion sort #include <stdio.h> #include <time.h> #include <stdlib.h> #define ...

  2. CAShapeLayer和CAGradientLayer

    两个动画效果来了解一下CALayer的两个重要的subClass,CAGradientLayer和CAShapeLayer. 微视录制视频的时候那个进度效果和Spark相机类似,但是个人还是比较喜欢S ...

  3. PHP如何抓取https内容?记录一下。

    PHP里做一般的获取内容时,用自带的file_get_contents()函数基本就足够了.当然,这个函数只能抓一些简单的数据,如果是遇到需要登录的页面,就不行了,而且效率及稳定性也不是很强.所以要是 ...

  4. Sequence用堆排序

    Description Given m sequences, each contains n non-negative integer. Now we may select one number fr ...

  5. Matrix 二维树状数组的第二类应用

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17976   Accepted: 6737 Descripti ...

  6. 如何使用数据卷在宿主机和docker容器之间共享文件

    共享宿主机的目录给容器 docker run -i -t -v ~/download:/home/hello python3-env /bin/bash -v  表示创建一个数据卷并挂载到容器里 ~/ ...

  7. SQL_server 数据库备份信息查看

    select distinct s.database_name, s.first_lsn,s.last_lsn,s.database_backup_lsn,s.backup_finish_date,s ...

  8. JMS笔记(一)

    1.jms概念 Java Message Service为 Java程序提供一种访问企业消息系统的方法,JMS应用由JMS生产者.JMS Provider.JMS消费者构成 1.1. 一条Messag ...

  9. [改善Java代码]使用valueOf前必须进行校验

    每个枚举都是java.lang.Enum的子类,都可以访问Enum类提供的方法,比如hashCode(),name(),valueOf()等..... 其中valueOf()方法会把一个String类 ...

  10. 通用函数get和set

    这两个函数在画图时很常用,所有对象都有属性来定义它们的特征,正是通过设定这些属性来修正图形显示的方式.尽管许多属性所有的对象都有,但与每一种对象类型(比如坐标轴,线,曲面)相关的属性列表都是独一无二的 ...