URL 友好串(Slug)生成器
文本将任意文本(含中文、重音字符、emoji)转换为 URL 安全的 slug。可选分隔符、大小写、中文转拼音音译及长度上限,实时预览。
本页内容
什么是 slug 生成工具?#
slug 生成工具把一个人能读懂的标题转成 URL 安全的 slug——也就是网址里域名之后那段紧凑、小写、没有标点的字符串。How to Brew Coffee at Home 变成 how-to-brew-coffee-at-home;Café Münchën 变成 cafe-munchen;你好世界 变成 ni-hao-shi-jie。博客、电商、文档系统就是靠 slug,从一个本来根本不是为 URL 写的标题里,造出可读、可分享、对 SEO 友好的网址。
棘手的恰恰是大家实际会用的那些字符:重音字母(café)、连字(ß、æ)、破折号和弯引号,还有压根没有 ASCII 表示的 CJK 汉字。一个天真的”删掉所有非 a-z 字符”会把 你好世界 变成空字符串,造出一个坏掉的 URL。这个工具把这三类都处理对了:它分解带重音的字母再剥掉附加符号(é → e),映射那些不能分解的拉丁连字(ß → ss、æ → ae),并把 CJK 汉字音译成无调拼音(你好世界 → ni hao shi jie),让一个中文标题也能产出一个有意义的、可读的 slug。
全部在本地跑。拼音词库只在输入里真有 CJK 时才加载,纯拉丁的 slug 永远不用为它买单。
怎么使用#
- 在左侧 输入 框里输入或粘贴标题。
- 选 分隔符 —— 连字符(默认)或下划线。
- 勾 小写(默认开)把输出折成小写;需要保留大小写就取消勾选。
- 勾 音译(默认开)把 CJK 字符转成无调拼音;希望 CJK 被删掉而不是音译就取消勾选。
- 可选地设一个 最大长度(0 表示不限)。slug 超过它时会被截断,并且会修掉结尾悬空的多余分隔符,保证 URL 绝不以一个光秃秃的
-收尾。 - 看右侧 输出 框——输入或任一选项一变,slug 立刻出现。点 复制 取走。
状态栏会显示 slug 的长度,并标出两种特殊情况:CJK 是否被音译过、结果是否为了塞进最大长度而被截断。
主要特性#
- 重音和连字处理。 NFKD 分解加一份小的拉丁兼容映射表,把
café、Münchën、straße、œuvre变成干净的 ASCII(cafe、munchen、strasse、oeuvre),而不是把字母整个删掉。 - CJK 转拼音。 中文字符用内置词库音译成无调拼音,所以
你好世界变成ni-hao-shi-jie——一个可读、有意义的 slug,而不是空串或乱码。 - 干净的词边界。 CJK 字符段在走分隔符那一道之前会被空格包起来,所以音译结果是按词分开的(
ni-hao),而不是黏成一坨(nihao)。 - 长度上限带干净截断。 最大长度会截断 slug,再修掉结尾悬空的分隔符,保证 URL 绝不以
-收尾。 - 连字符或下划线。 按你的平台期望来选——现代网页 slug 大多用连字符,但某些系统和文件名约定用下划线。
- 拼音按需加载。 拼音词库只在第一次输入里真有 CJK 时才导入,纯拉丁的 slug 永远不下载它。
- 本地且从不抛异常。 空输入报
empty;剥得什么都不剩的输入(比如只有 emoji)报no-output。失败变成一句清楚的提示,绝不抛异常。
实例演示#
把输入框里那句占位标题粘进来,全用默认值(连字符、小写开、音译开):
Café Münchën — 你好世界
一步步看:
- 检测到 CJK,于是
你好世界被音译成ni hao shi jie。 - 剥掉重音:
Café→Cafe、Münchën→Munchen。 - 破折号和空格塌缩成分隔符。
- 结果小写化,再去掉首尾多余的分隔符。
输出框显示:
cafe-munchen-ni-hao-shi-jie
现在把 最大长度 设成 20 再生成一次。slug 被截断,结尾那个悬空的连字符被修掉:
cafe-munchen-ni-hao
注意:重音变成了干净的 ASCII,中文标题变成了按词分开、可读的拼音,长度上限给出的是一个干净的 URL 片段,而不是半截词或者光秃秃一个连字符。
常见问题#
为什么我的中文标题变成了拼音,而不是保留汉字?#
因为 URL 用 ASCII 最安全、最通用。汉字在 URL 里要百分号编码(每个 你 会变成 %E4%BD%A0),对人不可读,对很多分析工具也不友好。无调拼音让 slug 保持可读、有意义、纯 ASCII——ni-hao-shi-jie 比一串百分号强得多。如果你更想保留原字,取消勾选 音译。
emoji 和其他非字母数字符号会怎样?#
会被剥掉。emoji、弯引号、方括号和大多数标点都活不过 slug 流水线——它们不是字母,所以那道”非字母数字塌缩”会把它们变成分隔符。如果你的输入只有 emoji 和符号,全部剥光之后工具会报 no-output,而不是吐出一个空 slug。
分隔符该选连字符还是下划线?#
人要读的 URL 用连字符——搜索引擎把连字符当词边界,几乎所有现代网页平台都用它。下划线适合 slug 其实是文件名或标识符、而系统又把连字符留给别处(版本范围、参数标志)的场景。两种工具都支持,按你的目标平台期望来选。
最大长度是怎么截的?#
先把 slug 完整建出来,再截到要求的长度。如果正好截在一个词中间,词就剩半截;如果截完留下一个尾部分隔符,就把它修掉。这保证 slug 既不超过限制,也不以光秃秃的 - 或 _ 收尾——这才是 URL 字段和数据库列宽真正要求的。
这个工具和 URL 编码是一回事吗?#
不是,区别很重要。URL 编码(百分号编码)是转义字符,让它能在 URL 里传输——café 变成 caf%C3%A9。而 slugify 是把文字归一化成 ASCII 字母和分隔符——café 变成 cafe。slug 用在 URL 里人能读的那一段路径;百分号编码用 query string 里安全传输任意值。你要的是后者,就用 /zh-CN/encoding/url/ 工具。