在回答一个Unix-&-Linux 问题,我观察到 Gedit 和另外两个编辑器 Leafpad 和 Medit(我总共测试了 12 个编辑器)表现出了某个错误。事实证明,该错误在 Canonical 的启动板中被称为 Bug #332321搜索(和替换)将 ss 作为 ß。
该错误的行为是find ß
同时匹配ß
and ss
...(不好,特别是如果您进行全部替换)。
然后我注意到 StackExchange 软件为了创建问题的 href 链接,已将问题的标题从 转换How to bind “ß” to Meta-s?
为 how-to-bind-ss-to-meta-s
。
ß
那么两个完全不相关的环境却以相似的方式对待……ß
和之间这种奇怪的吸引力是什么呢ss
? ……还有其他这样的“关系”吗?
答案1
ß
ss
实际上是(德语)的连字。任何使用表将 Unicode 或其他扩展字母字符转换为 URL 等“安全”字符的人都可能会将其转换为ss
.
对 URL 执行此操作是很正常的。例如,我说土耳其语,其中有英语中找不到的字母,例如ö ü ı â ğ ç ş İ
。这些字符在 URL、特殊表单字段等中使用并不总是安全的。我们用类似的字符代替它们,例如o u i a g c s I
。通常,这是通过视觉相似性而不是声音来完成的,但ß
听觉相似性的情况ss
使其成为常见的转换。
这会造成数据的净丢失,但作为 URL 或其他特殊字段的安全表示,它可以工作,然后在网站本身上您可以使用真实的字符。
为什么gedit
要进行这种转换超出了我的范围。这是一个错误。
答案2
案件正常化。 <用 Gedit 检查> 是的。
当您进行不区分大小写的搜索时,GEdit(以及我认为其他的)会规范化大小写,这会导致许多字符等效性崩溃。例如,ß
和ss
都大写SS
。复合字符如é
和é
(第一个是 U+00E9 LATIN SMALL LETTER E AND ACUTE,第二个是 U+0301 COMBINING ACUTE ACCENT 后跟 U+0065 LATIN SMALL LETTER E)也被认为是等效的。
如果您进行区分大小写的搜索,这些字符序列都被认为是不同的。