curl在Windows端中文URL乱码问题是版本太老,需要更新
下载地址:
问题现象:
C:\Users\Maker Yang>curl -V curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: 2017-11-14, security patched: 2019-11-05 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL C:\Users\Maker Yang>curl -i "http://www.yhth88.com/测试" HTTP/1.1 404 Not Found Date: Sun, 02 Mar 2025 02:22:25 GMT Content-Type: text/plain; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive cf-cache-status: DYNAMIC vary: accept-encoding Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=ltyyZuPAUvcpqToa2%2FdUZ8maGz%2FzqLBAFQ%2BKBYpf7zurNRybWhFDY1CYkQf0h4cOWRZ90CzirRiQfZrfGKqr%2Fdsr1nKesQxY%2FeBme1u9gtWh89pjr7mwXNtwZ43tVw%3D%3D"}],"group":"cf-nel","max_age":604800} NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800} Server: cloudflare CF-RAY: 919d6d11fdfd6809-SJC alt-svc: h3=":443"; ma=86400 server-timing: cfL4;desc="?proto=TCP&rtt=198527&min_rtt=198527&rtt_var=99263&sent=1&recv=3&lost=0&retrans=0&sent_bytes=0&recv_bytes=94&delivery_rate=0&cwnd=178&unsent_bytes=0&cid=0000000000000000&ts=0&x=0" 'ɽ'404 Not Found
安装新版本方法:
- 访问 curl 官方网站:
👉 https://curl.se/windows/ - 下载 最新的 Windows 64-bit 版本(Generic / Win64)。
- 解压后,将
curl.exe
复制到:C:\Windows\System32\
或 添加解压目录到PATH
环境变量。
新版本:
C:\Users\Maker Yang>curl -V curl 8.12.1 (x86_64-w64-mingw32) libcurl/8.12.1 LibreSSL/4.0.0 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 WinIDN libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.64.0 ngtcp2/1.11.0 nghttp3/1.8.0 Release-Date: 2025-02-13 Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli CAcert HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL SSLS-EXPORT SSPI threadsafe UnixSockets zstd C:\Users\Maker Yang>
注意:
如果Windows 10的系统版本比较老,也无法正常使用curl的中文URL,需要升级Windows10为更新的版本,至少24年的版本。
手动转换为url编码:
url编码中文部分在线转换:https://www.urlencoder.org/
PowerShell方法1:
PS C:\Users\Maker Yang> curl.exe -i ("http://www.yhth88.com/" + [System.Uri]::EscapeDataString("测试"))
PowerShell方法2:
(Invoke-WebRequest -Uri ("http://www.yhth88.com/" + [System.Uri]::EscapeDataString("测试")) -Method Head -MaximumRedirection 0).RawContent