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种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...
随机推荐
- C#/Entity Frame Core 使用Linq 进行分页 .Skip() .Take() 的使用方法
一般使用格式为 int pagesize = 分页大小(每一页大小)int pageindex = 第几页(一般这个变量是随循环递增的) 使用方法.Skip(pagesize*pageindex).T ...
- matlab中的knn函数
knn 最邻近分类 Class = knnclassify(test_data,train_data,train_label, k, distance, rule) k:选择最邻近的数量 distan ...
- 【Win10+eclipse+MinGW+QT安装教程】已有eclipse环境下配置QT插件出错详解
(纪念一下装了一整天濒临绝望的自己[/doge]) (以下所有下载项一律使用32位) step1:下载安装eclipse.适配的jdk.MinGW和QT 1.下载32位eclipse for c++以 ...
- linux环境下 C++性能测试工具 gprof + kprof + gprof2dot
1.gprof 很有名了,google下很多教程 g++ -pg -g -o test test.cc ./test //会生成gmon.out gprof ./test > prof.l ...
- 关于memcpy的实现
今天去面试,面试官出了一个关于memcpy的函数原型的实现的问题,本来这个问题是很简单的,但是不知道当时怎么脑子一抽竟然写错了,真是”累觉不爱”了.感觉这份工作算是泡汤了,算了事情发生了,错过了也就错 ...
- AngularJs 与服务器通信 $http, $q, $resource
$http服务是AngularJS系统自带的,可以用来进行网络通信.获取远程服务器的数据.要记住的是,$http是对浏览器XMLHttpRequest的封装,也就是说,它其实是Ajax. $http( ...
- python一键对应多个值
背景:目前是想让一个取出来的数据,数据有2个或多个值,对应一个key,或者这样说:让一个键对应2个值或者3个值 实现方式,如下:目前我以读取xml文件为案例,读取xml中两个配置文件,存放到一个key ...
- java开发优化常用的快捷键
快速打印的输出语句:输入syso,然后按alt+/,即可 快速删除一行:ctrl+D 让代码块缩进:选中要缩进的代码,然后按tab键 让代码块退格:选中要退格的代码,然后按shift+tab键 格式化 ...
- Mysql 创建普通用户、数据库、表、插入记录,用户赋权
C:\phpStudy\MySQL\bin>mysql -uroot -proot -h127.0.0.1 //创建用户 mysql> insert into mysql.user (ho ...
- 验证码帮助类【CaptchaHelper 】
GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D)的图形和图像,使用Direct ...