ubuntu 和 osx 哪个好?

ubuntu 和 osx 哪个好?

不确定这是 ubuntu 还是 osx 的问题,但我将从这里开始。如果更合适,我将让版主将问题移至 AskDifferent。

我使用苹果机器上的 scp 将文件从 ubuntu 移动到 osx。我在苹果机器上编辑了该文件。然后我再次使用苹果机器上的 scp 将文件移回。

源文件的文件名是文件/trettiårsfirarätare

  • 源代码:Documents/trettiårsfirarätare

我得到的文件名有名称文件/trettiårsfirarätare

  • 源代码:Documents/trettia˚rsfirara¨tare

虽然它们看起来相似,但字母 å 和 ä 实际上是不同的。我从未更改过文件的名称。

这对我来说没有什么技术上的区别,我只是将文件的名称改回 ubuntu 认为的 å 和 ä,但它引起了我的好奇心。

你能向我解释一下为什么会发生这种情况吗?

答案1

在原始名称“Documents/trettiårsfirarätare”中,字母“å”在内部表示为 U+00E5 带上环的拉丁小写字母 A。这是此字符的常见表示。在您返回的文件名中,它已转换为字符对 U+0061 带上环的拉丁小写字母 A U+030A 带上环的组合。这是允许的,但不常见;这意味着将“å”分解为基本字符“a”和组合变音符号。这些表示在 Unicode 中被声明为规范等价的;这意味着通常预计视觉呈现是相同的,但事实并非如此(在这里,在 SO 中,从 Firefox 中查看,事实并非如此 - 这取决于字体和渲染软件)。程序可能将它们视为等效的,但没有必要。例如,在文件系统中,它们很可能被视为不同的。

类似地,字母“ä”分解为 U+0061 拉丁小写字母 A U+0308 组合分音符。

原因并不明显。可能有些软件“认为”它应该将字符串转换为一种规范化形式,以分解所有可分解字符,可能Unicode 规范化表格 D (NFD)

其余部分则更加神秘。您为所返回的文件名指定为“源代码”,即“Documents/trettia˚rsfirara¨tare”,分解后的形式已被混淆:变音符号已被替换为它们的间距克隆,即字符“˚”和“¨”。这是不正常的,它既改变了数据的身份,也改变了数据的呈现。

相关内容