URL Slug 生成
网络所有处理都在浏览器本地完成,数据不上传服务器
「转小写再把空格换成连字符」这句话看起来就够了,但真正的 slug 生成器要处理四件它做不到的事:变音符号(`Café Zürich` 该是 `cafe-zurich`,而不是把 `é` 当分隔符丢掉的 `caf-z-rich`)、连续分隔符(`Hello World!` 不该出现两个连字符)、长度上限(太长会被 CMS 按自己的规则截,截在哪里不由你决定)、以及中文。 中文这一条单独给了选项,因为三种做法都自圆其说:转拼音(`ni-hao-shi-jie`)可读可输入、原样保留在现代浏览器与搜索引擎里都能用、丢掉只在中文是附注时才合理。默认取拼音 —— 它是中文站点里最常见的做法。 一次可以粘多个标题,一行一个,每行各自产出一个 slug。全部在浏览器本地完成,标题不外传。
功能
- 去变音符号用 Unicode 分解(NFD)而不是手写替换表,越南语这类叠加记号多的文字也能覆盖
- 中文三种做法可选:转拼音、原样保留、直接丢掉;中英混排时两边都在、顺序不变
- 连续分隔符合成一个,首尾不留 —— 不会出现 `hello--world` 或结尾多一个连字符
- 按词截断到指定长度,不会切在单词中间(`how-to-deploy-a-static-site` 截到 16 是 `how-to-deploy-a`)
- 非 ASCII 文字(西里尔、希腊、阿拉伯、泰文)默认当分隔符丢掉,不会留下 `%D0%9F…` 这种读不了的串
- 一次多行,每行一个 slug,逐行可复制
- 分隔符可换成下划线,适合 snake_case 风格的站点
- 大小写可保留(`Hello-World` 而不是 `hello-world`)
使用方法
- 一行一个标题粘进来,中英混排也可以
- 按站点习惯选中文处理方式与分隔符
- 需要控长就填长度上限,工具会按词截断
- 点行末复制,或整块复制全部结果
常见问题
- 中文该转拼音还是原样保留?
- 两种都能用,看你的站点和你自己怎么想。转拼音(`ni-hao-shi-jie`)可读、可输入、在任何老系统里都不会出问题,是中文站点最常见的做法;原样保留(`你好世界`)在地址栏里会显示成 `%E4%BD%A0%E5%A5%BD…`,但复制、分享、搜索引擎都完全正常,现代浏览器还会把它显示回汉字。唯一要避开的场合是「这条 URL 会被贴进老系统的日志或邮件」—— 那种环境里百分号编码的串既难读又常被截断。
- 为什么 `Øre` 变成了 `re`,而 `Öre` 能变成 `ore`?
- 因为 `Ö` 是一个「基字母 + 组合记号」的写法,Unicode 分解能把它拆成 `O` 和那个小点,去掉记号就得到 `O`。而 `Ø`(U+00D8)是一个独立的字母,它身上没有可以拆掉的记号,分解之后还是 `Ø` —— 于是被当作非 ASCII 丢掉。这是这类工具的真实边界,不是 bug:想留住它只能手写一张例外表,而那张表永远补不全。
- 长度限制为什么不是直接砍到第 N 个字符?
- 因为砍在单词中间得到的是一段读不出来的碎片(`how-to-deplo`)。所以这里按词截断:能放几个完整的词就放几个,放不下整个词就丢掉那个词。只有一种例外 —— 上限比第一个词还短,那时没有完整的词可放,只能把第一个词硬截一段(`how-to-deploy` 截到 2 是 `ho`),否则结果就是一个空串。
- 下划线和连字符该用哪个?
- 两种搜索引擎都认,但连字符是绝大多数站点与博客系统的默认选择,也是 Google 明确说过会把 `-` 当词分隔符的写法。下划线更适合本来就用 snake_case 的场合(比如一类文件名或旧式 CMS 的路径),保持站内一致比选哪一个更重要。
相关工具
URL 解析
网络在线 URL 解析:拆出协议、主机、端口、路径、查询参数与锚点,参数逐个解码并与原始值对照,缺协议自动补 https://。全部在浏览器本地完成。
URL 清洗
网络按厂商族去掉链接里的 utm_、gclid、fbclid 等 90+ 个追踪参数,每族可单独开关,逐条列出删了什么。名单之外一律保留,参数顺序与编码原样不动。
Punycode 转换
网络中文、日文等国际化域名与 Punycode(xn--)互转,逐标签对照,并标出超过 63 字节的标签与同形异义字风险。
UA 解析
网络在线 User-Agent 解析:识别浏览器、版本、操作系统、设备类型与渲染引擎,并列出命中的匹配规则。结果基于模式匹配,仅供参考。全部在浏览器本地完成。
HTTP 状态码
网络HTTP 状态码查询与速查:输入编号查含义、1xx 到 5xx 分类、常见场景与排查提示,也能用关键词反查编号。全部在浏览器本地完成。
MIME 类型
网络MIME 类型与扩展名双向查询:输入 js 得到 text/javascript,输入 image/svg+xml 得到默认扩展名。附数据来源与覆盖范围,全部本地完成。