Linux - iconv 使用 - 处理 curl 乱码问题
1. 概述
- 好久没有写博客了, 最近看了些东西, 但是不知道怎么输出
- 简单写点东西吧
2. 场景
- 最近发现一个网站, 时不时会更新电子书, 书还很好
- 网站有一个 排行榜, 会把近期更新的电子书, 都列出来
- 我之前的思路, 是隔两天扫一轮
- 现在网站转变了思路
- 更新应该是每天来的
- 但是排行榜并不每天更新
- 排行榜最开始有 100 个内容, 现在只有 20 个
- 结果
- 不定期更新, 导致每次更新内容可能会很多
- 如果多于 20 个, 可能会导致我丢内容
- 我的目的
- 能够不漏地获取到网站更新的电子书
3. 思路
- 电子书的更新 url, 是有规律的, 里面的变量, 是一个 int
- 这个可以通过 循环 来帮助生成
- 因为不熟悉 爬虫, 所以只有使用 shell 来做
- curl 是个选择
- 获取的页面内容, 可以通过 grep 来过滤标题, 查看到底是什么书
4. 环境
- 操作系统
- windows 10
- shell
- git bash
- 建议
- 有条件最好用 linux
5. 问题
概述
- 执行中遇到了些小问题
思路
- 思路是先做单体, 再做循环
- 先使用 curl 来做
- 然后用 grep
- 最后 循环, 输出到文本文件
- 思路是先做单体, 再做循环
问题
curl 乱码
- curl 下来的东西, 中文部分是乱码
尝试解决
调整 git bash 的编码
- 想法
- 可能是 curl 的结果, 和 git bash 的编码不一致
- 尝试调整成 gb2312 看看
- 结果
- curl 的东西可以看了
- 但是 文件系统 里, 之前正常显示的内容乱码了
- 结论
- curl 内容是 gb2312 的编码
- 本地文件系统, 是 utf8 的编码
- 两种编码不一致, 所以乱码了
- 这种调整 gitbash charset 的思路, 不可用
- 想法
改变 curl 内容的编码
想法
- 不是 git bash 乱码
- 是 curl 内容乱码
- 如何改变 curl 结果的编码
确认编码
- 思路
- 是的, 之前的编码是猜的
- 但是, 编码是可以确认的
- 正确的思路, 是应该先确认
- shell 代码
> curl <url> | grep -E 'charset'
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- 思路
转换
- 使用 iconv 工具
概述
- 一个转码的工具
- 简单使用, 不做详细介绍了
使用
命令
# 1. 查看支持字符集
> iconv -l
# 2. 转换字符集
## 1. 默认输出到屏幕
## 2. -t 默认好像是 utf8
> iconv -f <fromEncode> -t <toEncode> <file>
# 3. 支持管道
> curl <url> | iconv -f gb2312
- 使用 iconv 工具
5. 后续
- 后续就是过滤内容, 生成列表
- 这块也不难, 我就不讲了
6. 问题
- 思路的本质
- 感觉本质上, 这是个爬虫
- 如果会 爬虫, 工作会不会轻松很多
- 安全机制
- 我如果每天扫那个网站, 会不会触发安全机制
- curl 和 grep
- 好久不用, 感觉有点生疏
- 我过滤的内容, 最后都是带 html 标签的
- 据说这些工具, 可以去掉标签
- grep
- sed
- 只有下来研究了
- 据说这些工具, 可以去掉标签
7. ref
一个问题
- 问题: 在 git for windows 下, 使用 java 会有奇怪的问题
环境
- windows
- java
- 输出编码是 gbk
- git for windows
- 输出编码是 utf-8
操作
- 输入命令
java -h
有 乱码 - 将 git 的编码调整为 gbk, 输出 命令输出 没有乱码
- 将 git 的编码调整为 utf-8, 使用
java -h|iconv -f gbk
依然乱码
- 输入命令
疑问
- 为什么 iconv 可以处理 curl 传来的信息, 却处理不了 java 的
- 是因为两者 输出的结果, 本身就不是同一类东西吗
- 知道的高手走过路过, 麻烦留个言
- 问题: 在 git for windows 下, 使用 java 会有奇怪的问题
Linux - iconv 使用 - 处理 curl 乱码问题的更多相关文章
- linux下打开txt显示乱码的解决方法
Linux打开txt文件乱码的解决方法 Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb1 ...
- 解决Linux文档显示中文乱码问题以及编码转换
解决Linux文档显示中文乱码问题以及编码转换 解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打 ...
- linux终端 字符界面 显示乱码
方法一:配置SSH工具 SecureCRT中文版配置 [全局选项]→[默认会话]→[编辑默认设置]→[终端]→[外观]→[字体]→[新宋体 10pt CHINESE_GB2312]→[字符编码 UTF ...
- linux下编译安装curl
linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...
- Linux与Windows 解压乱码 UTF8BOM读取问题
Linux 与 Windows 文件乱码问题 这几天需要在linux下用CNN跑数据,但是把数据和数据列表list上传到linux下时却出现了不少乱码的问题.将这两天碰到的编码问题简单的总结一下. 1 ...
- XShell连接 Linux系统,显示中文乱码
摘要: Linux系统,中文显示乱码 XShell是一个强大的安全终端模拟软件,它支持SSH1, SSH2及 Microsoft Windows平台的Telnet NetSarang Xshell 4 ...
- SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题
一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...
- Linux 解决Linux下火狐浏览器中文乱码成方块显示问题
解决Linux下火狐浏览器中文乱码成方块显示问题 by:授客 QQ:1033553122 测试环境: CentOS-6.0-x86_64 问题描述: 浏览器页面显示如下 解决方法: 安装中文支 ...
- Linux下命令行cURL的10种常见用法示例
curl的命令行工具功能非常强大,这些数据交互的功能基本上都是通过URL方式进行的,下面这篇文章主要给大家分享了在Linux中命令行cURL的10种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...
随机推荐
- 内置模块之sys
一.模块sys sys模块主要对解释器相关的操作 1.常用方法和属性 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) ...
- Scala隐式转换和隐式参数
隐式转换 Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象或者是给一个类增加方法.通过这些功能, ...
- Hadoop Spark 基础教程
0x01 Hadoop 慕课网 https://www.imooc.com/learn/391 Hadoop基础 慕课网 https://www.imooc.com/learn/890 Hadoop ...
- C/C++中作用域详解
转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777433.html 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿 ...
- Django的视图流式响应机制
Django的视图流式响应机制 Django的响应类型:一次性响应和流式响应. 一次性响应,顾名思义,将响应内容一次性反馈给用户.HttpResponse类及子类和JsonResponse类属于一次性 ...
- Python 多线程 进程与线程相关概念 (一)
0x00 并行和并发 并行:同时做某些事,可以互不干扰的同一时刻做几件事. 并发:也是同时做某些事,但是强调,同一时刻做了几件事. 0x01 并发的解决: 1)队列.缓冲区: 排队就是队列,先进先出. ...
- SpringBoot实战(十)之使用Spring Boot Actuator构建RESTful Web服务
一.导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
- FreeMarker之根据模板生成Java代码
FreeMarker根据模板生成Java代码,光这句话,大家想必也知道它的应用了,比如流行的DRY原则,该原则的意思,可简单概述为"不要写重复的代码". 比如Java中三层架构,数 ...
- Go并发与.Net TAP
Go package main import "fmt" func sum(arrays []int, ch chan int) { fmt.Println(arrays) sum ...
- SDN测量论文粗读(三)9.24
Jaal: Towards Network Intrusion Detection at ISP Scale 论文来源:CoNext 发表时间:2015 解决问题及所做贡献:Jaal:大规模精细网络入 ...