跳到主要内容
LeedyBox
支持我们

去除重音符号与生成 URL Slug

护照上的拼音姓名、邮箱地址、文件名和网页地址常常使用不带重音的字母。é 只要去掉符号即可,但越南语的 đ、土耳其语的 ı、德语的 ß、丹麦语的 ø 各有自己的写法。本指南介绍这些规则,以及如何把文章标题变成简洁的 URL slug。

带符号的字母有两类

大多数带重音的字母是基本字母加符号:é 是 e 加锐音符,ü 是 u 加分音符,越南语 ệ 是 e 加抑扬符和下点。Unicode 记录了每个字母如何分解,所以去掉符号就得到基本字母。同一个字母可以存成一个字符,也可以存成基本字母加单独的符号,两者看起来一样,去掉符号后的结果也一样。

而越南语的 đ、土耳其语的 ı、德语的 ß、丹麦语和挪威语的 ø 和 æ、冰岛语的 þ 并不是由基本字母加符号构成的,去掉符号后仍然不变,需要各自的写法。

护照的转写表

护照底部的机读区(MRZ)只使用 A 到 Z 的字母。国际护照规范 ICAO Doc 9303 中有一张表,规定各国字母在机读区的写法,可以作为不带重音书写的参考:

字母ICAO Doc 9303语言
É È Ê Ç ÑE E E C N法语、西班牙语、葡萄牙语等
Ä Ö ÜAE 或 A、OE 或 O、UE 或 U德语、瑞典语、土耳其语等
ẞ(ß)SS德语
ĐD越南语、克罗地亚语等
Ğ Ş Ç İ I(ı)G S C I I土耳其语
Ø Æ ÅOE、AE、AA 或 A丹麦语、挪威语
Ł Þ ŒL、TH、OE波兰语、冰岛语、法语

越南语:声调符号和 đ

越南语字母可以带两种符号:改变元音的符号(ă、â、ê、ô、ơ、ư)和五个声调符号(huyền à、sắc á、hỏi ả、ngã ã、nặng ạ)。写成“không dấu”(无符号)时两种都去掉,并把 đ 写成 d:Nguyễn Văn Đức 写作 Nguyen Van Duc。只去声调(Nguyên Văn Đưc)时,懂越南语的人仍能分辨元音。

土耳其语:带点的 i 和不带点的 ı

土耳其语有四个 i:带点的 i 和 İ,不带点的 ı 和 I。不带符号书写时,ı 写作 i,İ 写作 I,ç、ğ、ö、ş、ü 去掉符号即可。要注意的是转小写:Unicode 的通用规则会把 İ 变成 i 加一个组合上点(U+0307),这个看不见的字符会混进文件名和网址。先把土耳其语字母换成基本字母,再转小写,结果就处处一致。

德语:ae、oe、ue 和 ss

德语在无法使用变音符时把 ä、ö、ü 写成 ae、oe、ue:Müller 写作 Mueller 而不是 Muller。对于 ß,德语正字法官方规则(Amtliches Regelwerk)第 25 条 E2 规定:无法使用 ß 时写作 ss(Straße → Strasse)。其他语言只是去掉两点,所以土耳其语的 Üsküdar 写作 Uskudar。

把标题变成 URL slug

slug 是网址中代表页面的那一段。好的 slug 简短、小写,单词之间用连字符连接:

标题Slug
Café & Crème Brûlée: 10 Tipscafe-creme-brulee-10-tips
İstanbul'da Gezilecek Yerleristanbulda-gezilecek-yerler
Öffnungszeiten & Preise(德语)oeffnungszeiten-preise
Cách nấu phở bò Hà Nộicach-nau-pho-bo-ha-noi
  • 用连字符,不用下划线。Google 的网址结构指南建议单词之间用连字符,并使用可读的单词而不是很长的 ID 编号。
  • 删除撇号。don't 写成 dont,而不是 don-t。
  • 带重音的网址会变长。浏览器能直接显示,但复制的链接会经过百分号编码:Google 的示例中 gemüse 变成 gem%C3%BCse。
  • 已发布的 slug 不要随意修改。如果不设置从旧网址到新网址的永久重定向(301),原有链接就会失效。

中文标题的 slug

中文标题可以直接用汉字做 slug,也可以手动写一个拼音或英文 slug。直接用汉字时,地址栏显示中文,但复制的链接会变成 %E4%B8%AD… 这样的长串。把汉字自动转成拼音需要按词判断多音字,机械转换容易出错,所以手动写一个简短的拼音或英文 slug 更稳妥。

常见问题

Ä 应该写成 AE 还是 A?

护照转写表两种都允许。德语名字通常写 AE,土耳其语、芬兰语、瑞典语单词常写 A、O、U。以需要对照的证件上已有的写法为准。

slug 应该多长?

没有固定上限。保留描述页面的词,去掉其余的;许多内容管理系统也有自己的长度限制。

两段文字看起来一样,比较时却不相等,为什么?

可能一份把 é 存成一个字符,另一份存成 e 加组合重音符。去掉重音,或把两份文字规范化为同一种 Unicode 形式,就会相等。

名字不写重音算写错吗?

在护照机读区或旧的订票系统等不能使用重音的地方没有问题。能使用重音的地方,原本的拼写才是正确写法。