惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
人人都是产品经理
人人都是产品经理
小众软件
小众软件
博客园 - Franky
WordPress大学
WordPress大学
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
博客园 - 【当耐特】
IT之家
IT之家
G
Google Developers Blog
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
V
Visual Studio Blog
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
GbyAI
GbyAI
雷峰网
雷峰网

Taxodium

辣椒炒肉 用 Tamper-monkey 集成 Kagi Translate Zine#57 香港雞公嶺 給博客添加純文本版本 在 Emacs 中用漢典查詢倉頡碼 Album#48 Album#47 Re: Bloggers, can we make better titles for our posts? Album#46 Zine#56 Blaugust 2026 Feeds Album#45 Album#44 Zine#55 Album#43 請開啟 JavaScript 以繼續搜尋 近期觀影 小象超市鮮啤簡評 Zine#54 TIL: lang 属性會影响文字的尺寸 Zine#53 Elfeed 4.0.0 使用分享 分享一些 Zen 瀏覧器好用的功能 Zine#52 Zine#51 Album#42 上手倉頡輸入法 Album#41 Zine#50
TIL:Punycode
Spike Leung · 2026-09-01 · via Taxodium

域名中的 Unicode

之前看了 マリウス 的 disable-javascript.org,我就用 Elfeed 訂閱了他的博客,但後面一直在 Elfeed 裡看到拉取报錯,錯誤信息如下:

[error]: https://マリウス.com/index.xml: "(60) Peer certificate cannot be authenticated with known CA certificates."

Elfeed 是用 curl 發請求的(前提是 elfeed-use-curlt),直接用 curl 請求的話,报錯是:

curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to マリウス.com:443

之後我去問了 Kagi Assistant,經過一些排查後,終於找到了問題。


留意請求的域名,你會發現 你会讶异,你是我最压抑,最深处的秘密 ,我請求的域名是 マリウス.com 。但是 域名只支持 ASCII ,而 マリウス 顯然不是 ASCII ,而是 Unicode

當你在瀏覧器中輸入域名包含 非 ASCII 字符時,瀏覧器會將其轉成 Punycode 1表示:

Punycode 是 Unicode 在受限的 ASCII 字元子集下,用於網際網路主機名稱的表示方式。使用 Punycode 時,包含 Unicode 字元的主機名稱會被轉換為僅由字母、數字與連字號組成的 ASCII 子集,稱為字母‑數字‑連字號(letter–digit–hyphen, LDH)子集。

例如, マリウス.com 會被編碼為 xn--gckvb8fzb.com ,其中的 gckvb8fzbマリウス 對應的 Punycode,xn-- 是一個固定的 國際化域名 (International Domain Names, IDN) 前綴。

檢查我現在的 curl (curl -V),看到的是:

curl 8.7.1 (x86_64-apple-darwin25.0) libcurl/8.7.1 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.68.1
Release-Date: 2024-03-27
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL threadsafe UnixSockets

裡面沒有 IDN 相關的功能,所以是無法处理 マリウス.com 這樣的 IDN 的。

知道問題就好辦了,讓 curl 支持 IDN 就好,我用 homebrew 下載了新的 curl:

# 先安裝新版本
brew update
brew install curl
# 設到 PATH 的前面,优先用 homebrew 的版本
export PATH="$(brew --prefix)/opt/curl/bin:$PATH"

裡面就包含 IDN:

curl 8.21.0 (aarch64-apple-darwin25.4.0) libcurl/8.21.0 OpenSSL/3.6.4 zlib/1.2.12 brotli/1.2.0 zstd/1.5.7 AppleIDN libpsl/0.23.3 libssh2/1.11.1 nghttp2/1.70.0 ngtcp2/1.25.0 nghttp3/1.18.0 mit-krb5/1.7-prerelease OpenLDAP/2.4.28/Apple
Release-Date: 2026-06-24
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt mqtts pop3 pop3s rtsp scp sftp smtp smtps telnet tftp ws wss
Features: alt-svc AppleSecTrust AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd

用這個版本的 curl 進行請求,就能正常返回了。

如果 curl 不支持 IDN 也不想更新,用 Ponycode 形式的域名 (xn–gckvb8fzb.com) 就好。


另外 マリウス 也寫了篇文章解釋他的域名,感興趣也可以看看: NEVER click on a link that looks like that

Webmentions (加载中...)

如果你想回应这篇文章,可以在你的文章或社交媒体帖子中链接这篇文章,然后提交你的 URL,你的回应随后会显示在此页面上。 (关于 Webmention)