如何从文本中删除重音符号(以及为什么您想要这样做)
删除重音符号会将 á、é、ñ、ç 和 ü 等字母转换为其简单形式 a、e、n、c 和 u。这听起来像是一个利基需求,但当数据必须在系统之间移动时,它就会不断出现,而正确使用是有效的用户名和系统拒绝的用户名之间的区别。以下是您需要它的时间以及它的工作原理。
当你需要去掉重音时
常见的触发器是只接受基本 ASCII 字母的系统。从一个人的名字生成用户名或电子邮件地址,José 就变成了 jose。从带重音的标题创建 URL slug。为因非 ASCII 字符而堵塞的旧数据库准备数据。生成跨 Windows、Mac 和 Linux 的文件名。标准化搜索词,以便对“Jose”的搜索与存储为“José”的记录匹配。在所有这些中,文字都保持完全可读;仅删除变音符号。
重音消除的工作原理
在底层,每个重音字符都分解为两部分:一个基本字母加上一个单独的组合标记。 é 变成 e 加锐音符。然后标记被丢弃,只留下基本字母。这就是为什么咖啡馆变成咖啡馆,皮纳塔变成皮纳塔,而不会干扰文本中的其他任何内容。它一次性处理多种语言的重音,这使得它比逐个字符的查找和替换更可靠。
它处理哪些语言
该技术适用于拉丁语言、西班牙语、葡萄牙语、法语、德语、意大利语等,其中重音字母可以干净地分解为基本字母和标记。它处理所有常见的欧洲变音符号。请注意,非拉丁文字(例如中文、日语、阿拉伯语或西里尔字母)不会以这种方式分解为拉丁基本字母,因此该工具对于基于拉丁的文本最有用。对于这些脚本,音译是一个不同且更困难的问题。
重音、搜索和数据匹配
最有价值的用途之一是使搜索和匹配更加宽容。如果您的数据库存储“São Paulo”,但用户输入“Sao Paulo”,则它们将不匹配,除非您将两者规范化为相同的无重音形式。当对列表进行重复数据删除时,会出现相同的问题,其中相同的名称同时出现在带重音符号和不带重音符号的情况下,对于精确匹配工具来说,它们看起来像是不同的条目。在比较之前去除重音符号会将这些近似重复项转变为精确匹配项,这对于干净的数据和可靠的搜索至关重要。这是一个小的规范化步骤,可以悄悄地防止一整类错误。
关于何时不去除重音的快速说明
重音具有意义,因此不要从供人类阅读的文本(正确性很重要)、正式文件中的人名、已发表的散文或任何将“José”译为“Jose”会是错误或不尊重的内容中删除它们。重音去除是用户名、URL、匹配和遗留系统的技术标准化,而不是成品内容的编辑选择。保留带重音的原件以供显示,并使用剥离版本来完成需要它的面向机器的任务。