今天在做一个新浪微博的抓取测试,发现抓取后的内容是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. C# 采用线程重绘图形要点记录

    大家都知道J2ME 采用一个线程去获取数据,然后得到数据后更新屏幕是件很容易的事情,比如Thread{public void run(){ getData();repaint(); } }这样做就OK ...

  2. AES加密算法(C++实现,附源代码)

    先搞定AES算法,基本变换包含SubBytes(字节替代).ShiftRows(行移位).MixColumns(列混淆).AddRoundKey(轮密钥加) 其算法一般描写叙述为 明文及密钥的组织排列 ...

  3. 深度学习论文笔记-Deep Learning Face Representation from Predicting 10,000 Classes

    来自:CVPR 2014   作者:Yi Sun ,Xiaogang Wang,Xiaoao Tang 题目:Deep Learning Face Representation from Predic ...

  4. Python标准库:迭代器Itertools

    Infinite Iterators: Iterator Arguments Results Example count() start, [step] start, start+step, star ...

  5. sql操作事务SqlTransHelper类实现

    具体实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  6. windows下的python扩展包下载地址

    比如lxml什么的 Unofficial Windows Binaries for Python Extension Packages pip install xxx.whl

  7. form表单中method的get和post区别

    一.问题的提出   <form action="getPostServlet/getPost.do?param4=param4" method="get" ...

  8. assets

    我们知道assets/和res/文件夹用于存放可在应用程序中的使用文件. assets/用于存储各种应用程序中需要的文件(例如配置文件或音频文件等),这些文件会打包在Android应用程序中. res ...

  9. Storm中并发程度的理解

    Storm中涉及到了很多组件,例如nimbus,supervisor等等,在参考了这两篇文章之后,对这个有了更好的理解. Understanding the parallelism of a Stor ...

  10. SQL Server :事务和锁

    1.事务 事务概念:全部执行或全部不执行的一条或者多条语句的组合 例子说明:到银行里转账,将一个账户(Tom)里的100元钱转到另一个账户(Jake) update table money=money ...