`
wxw850227
  • 浏览: 70799 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

HttpClient 爬数据时 出现部分中文编码问题

    博客分类:
  • java
阅读更多
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>中文字库</title><body>中文字,偷偷藏着的Unicode码:合击狼族鋼鐵師诚招團队</body></html>

二、开始抓取

        HttpClient client = new HttpClient();
        HttpMethod method = new GetMethod(“http://www.test.com/test.html”);
        method.addRequestHeader("Content-Type", "text/html; charset=GB2312");

      byte[] html = method.getResponseBody();
      String body = new String(html,Charset.forName("GB2312"));
      System.out.println(“======”+body);

三、输出结果

<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>中文字库</title><body>中文字,偷偷藏着的Unicode码:合击狼族口口口诚招口队</body></html>

抓取到的数据中,隐藏中的Unicode码不是变成方框口,就是变成问号?。

解决办法: String body = new String(html,Charset.forName("GB18030"));

解决的根据如下:

中国国标编码:

GB 13000: 完全等同于ISO 10646-1/Unicode 2.1, 今后也将随ISO 10646/Unicode的标准更改而同步更改.
GBK: 对GB2312的扩充, 以容纳GB2312字符集范围以外的Unicode 2.1的统一汉字部分, 并且增加了部分unicode中没有的字符.
GB 18030-2000: 基于GB 13000, 作为Unicode 3.0的GBK扩展版本, 覆盖了所有unicode编码, 地位等同于UTF-8, UTF-16, 是一种unicode编码形式. 变长编码, 用单字节/双字节/4字节对字符编码. GB18030向下兼容GB2312/GBK.
GB 18030是中国所有非手持/嵌入式计算机系统的强制实施标准.                                                        
题外:Eclipse3.4后的默认中文编码是GB18030,之前的的Eclipse版本用的是GBK~~
分享到:
评论

相关推荐

    解决了中文乱码的http的get和post请求demo

    总的来说,解决HTTP请求中的中文乱码问题,核心在于正确地设置编码格式,并在发送请求前对中文数据进行编码。无论是GET还是POST请求,都需要确保客户端和服务器之间对字符编码的一致理解。通过阅读提供的文档和示例...

    人工智能-项目实践-搜索引擎-基本的垂直搜索引擎,实现了基本的网络爬虫功能以及用Luence实现检索

    这个过程可能包括去除HTML标签、链接,以及处理中文编码问题。 2. **分词与索引**:对于中文文档,我们需要进行分词,常用的是结巴分词库,它可以将文本拆分成有意义的词语。然后,将这些词语建立索引,便于后续的...

    易语言简单网页互动

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语句,使得非计算机专业背景的用户也能较为容易地学习编程。本主题聚焦于"易语言简单网页互动",这涉及到如何使用易语言来实现与网页的交互功能。这种...

    crawler:学习爬取并添加中文注释

    3. **中文编码处理**: 在处理中文字符时,需注意字符编码问题。HTTP响应头中通常包含Content-Type,指明了字符编码,如`charset=UTF-8`。确保正确设置输入流和输出流的编码,避免乱码。 4. **异步请求与多线程**: ...

    java开源包1

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包11

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包2

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包3

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包6

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包5

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包10

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包4

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包8

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包7

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包9

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    java开源包101

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

    Java资源包01

    HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的...

Global site tag (gtag.js) - Google Analytics