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种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...
随机推荐
- php中的static
静态成员是一种类变量,可以把它看成时属于整个类而不是属于类的某个实例.与一般的实例变量不同的是,静态成员只保留一个变量值,而这个变量值对所有的实例都是有效的,也就是说,所有的实例共享这个成员. $th ...
- Pip批量安装/卸载包
pip批量安装package 将需要安装的包保存在requirements.txt中 cd到aa.txt所在目录,运行: pip install -r requirements.txt pip批量卸载 ...
- js布局库
1.viz.js The solution was that someone cross compiled Graphviz to Javascript using llvm + emscripten ...
- 使用SN.exe对.Net生成的程序集进行签名
CLR用数字签名的方式防止程序集发布后被人篡改,也可以确定发布人,这个方法就是使用公/私钥对,然后对程序集所有模块取一个哈希生成一个数字签名放在程序集的元数据中. 1.创建公/私钥对 创建公/ ...
- python爬虫Jenkins编译失败的日志
背景:在Jenkins编译失败后,需要拿到Jenkins的编译失败的日志,存储在数据库中,在把数据取出来,在另外一个页面进行展示,我的思路为: 1.观看Jenkins编译失败后的控制台显示的内容 2. ...
- Gym 100633G Nano alarm-clocks
题目,给定n个时钟,要求把他们调成一样的时间.求最小的步数 思路:肯定是有一个时钟作为标准的啦,要找到这个时钟,怎么找呢?没其他方便的方法,暴力枚举.那么枚举后,怎么能快速地算到其他时钟转到这个时钟的 ...
- Java基础知识强化之集合框架笔记78:ConcurrentHashMap之 ConcurrentHashMap、Hashtable、HashMap、TreeMap区别
1. Hashtable: (1)是一个包含单向链的二维数组,table数组中是Entry<K,V>存储,entry对象: (2)放入的value不能为空: (3)线程安全的,所有方法均用 ...
- matlab中的unique函数详解
https://blog.csdn.net/sinat_40282753/article/details/78373532
- Window窗口布局 --- DecorView浅析
开发中,通常都是在onCreate()中调用setContentView(R.layout.custom_layout)来实现想要的页面布局,我们知道,页面都是依附在窗口之上的,而DecorView即 ...
- [19/05/02-星期四] GOF23_行为型模式(状态模式、观察者模式、备忘录模式)
一.状态模式 [状态接口] /*** * 房间"状态"接口 */ package cn.sxt.state; public interface State { void handl ...