后台别名填的是中文,复制到微信里发出去,链接显示成一长串 %E5%AF%BC 这样的字符,对方点开能打开,转发两次后链接断在 % 处。日志里能对上时间点,这种反而好排。

浏览器地址栏会把中文自动转成 UTF-8 百分号编码,复制出来的其实是编码后的串,一些聊天工具会按 % 截断。编码本身没问题,问题在链接被二次拼接时没做 encodeURI。这一点先确认清楚,后面就不用反复试。

encodeURIComponent('https://example.com/导购/清单')
# 输出 https://example.com/%E5%AF%BC%E8%B4%AD/%E6%B8%85%E5%8D%95
curl -sI 'https://example.com/%E5%AF%BC%E8%B4%AD/' | head -3

「中文 URL 编码」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

处理上按这个顺序:别名尽量用英文或拼音,后台固定链接里不要留中文;分享按钮拼链接时统一走 encodeURIComponent,别直接做字符串相加;对外的短链先落库再发,短链只含字母数字,避开编码问题;已经发出去的旧链接保留一条 301,指向新的英文地址。

结果对不对很好判断,分享面板复制出的链接只含 %XX 和字母,微信里点开不再截断,落地页标题正常。

作者 9823189