我正在尝试从中提取汉字列表https://lingua.mtsu.edu/chinese-computing/statistics/char/list.php?Which=MO制作一个 bash 脚本。然而,当我跑步时
curl -o list.txt https://lingua.mtsu.edu/chinese-computing/statistics/char/list.php?Which=MO
我发现curl使用的是UTF-8编码,而不是网站使用的GB2312编码,将汉字变成了随机字符。所以我的问题变成了:如何更改curl 用于下载HTML 的编码?
的输出
curl --version
curl 8.0.1 (x86_64-pc-linux-gnu) libcurl/8.0.1 OpenSSL/3.0.8 zlib/1.2.13 brotli/1.0.9 zstd/1.5.5 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.10.0 nghttp2/1.52.0
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd
(我注意到这缺少CharConv
手册页中提到的功能)
答案1
你把这里的事情搞混了。
该文件实际上只包含与接收到的完全相同的字节。curl
不对它进行任何转换。事实不同显示方法文件选择不同的编码来解释这些字节与curl无关!
您的浏览器在首先访问该站点时,可能会收到一个 HTTP 标头,通知它要使用的编码。该标头不是内容的一部分,因此无法保存到包含 HTML 的文件中。