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种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...
随机推荐
- phpstrom设置php环境
phpstorm设置自动同步服务器 Tools->Deployment->Confinguration 点+号,添加服务器,类型SFTP,输入name 点击ok,项目与服务器连接成功! 设 ...
- 深入浅出SharePoint——常用的url命令
?&displaymode=design 页面可编辑
- Programming Assignment 3: Baseball Elimination
编程作业三 作业链接:Baseball Elimination & Checklist 我的代码:BaseballElimination.java 问题简介 这是一个最大流模型的实际应用问题: ...
- Session not active, could not store state 的解决方法
1.开口加上session_start() http://metah.ch/blog/2014/05/facebook-sdk-4-0-0-for-php-a-working-sample-to-ge ...
- 【转】多线程Core Data
原文地址:http://www.cocoanetics.com/2012/07/multi-context-coredata/ Multi-Context CoreData When you star ...
- 两天学会css基础(一)
什么是css?css的作用是什么? CSS 指层叠样式表 (Cascading Style Sheets)主要作用就是给HTML结构添加样式,搭建页面结构,比如设置元素的宽高大小,颜色,位置等等. 学 ...
- css属性之flex属性
flex属性 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间.是一个简写属性,可以同时设置flex-grow, flex-shrink, flex-basis三个子属性. /* Basic ...
- webstorm中导入git项目
1.打开webStrom 配置git File–setting
- centos 7.0 查看selinux状态|关闭|开启
Linux在安装好之后通常SELinux都是出于默认开启的状态,开启的情况下会导致一些服务的安装不成功. 在不需要的情况下完全可以关闭掉,下面是在centos 7.0里面如何查看,关闭selinux. ...
- python 打包文件
tarfile import tarfile tar = tarfile.open("sk_camera_6018.tar","w") tar.add(full ...