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种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...
随机推荐
- ORA-12514
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 监听器目前不知道在 ...
- Visual Studio Code (vscode)编译C++
Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮.智能代码补全.自定义热键.括号匹配.代码片段. ...
- 深入浅出SharePoint——常用的url命令
?&displaymode=design 页面可编辑
- Scala模式匹配和样例类
Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配. 1.字符匹配 def mai ...
- Android Studio Git .gitignore文件配置忽略不需要的文件
转载请标明出处: http://www.cnblogs.com/why168888/p/6440805.html 本文出自:[Edwin博客园] # Built application files * ...
- Linux环境搭建多项目SVN
1.安装SVN #yum install subversion 2.创建版本库文件夹 #mkdir -p /var/svn/repos/pro1 (/var/svn/repos是根路径,pro1是项目 ...
- Python 多线程 线程安全、daemon简介 (四)
线程安全 只能在Winodws下的ipython中演示,Python命令行.Pycharm.Mac下的ipython都演示不出效果 import threading def worker(): for ...
- nodejs中npm以及yarn常用指令
1.npm下载相关 1.npm install/i vue //下载vue的包 2.npm i vue --save-dev / -D //下载vue的包,并添加到开发依赖中 3.npm i //下载 ...
- Mysql-常用数据的基本操作和基本形式
一 .介绍 二 .插入数据INSERT 三 .更新数据UPDATE 四 .删除数据DELETE 五 .查询数据SELECT 六 .权限管理 一. 介绍 MySQL数据操作: DML ========= ...
- 16JavaScript for循环
1.JavaScript 循环 如果希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的. 我们可以这样输出数组的值: 一般写法: document.write(cars[0] ...