ubuntuåvs osxa¿


10

不知道这是一个ubuntu还是osx问题,但是我将从这里开始。如果合适的话,我将其留给mod来将问题移至AskDifferent。

我在苹果机上使用scp将文件从ubuntu移到osx。我在苹果机上编辑了文件。然后,我又在苹果计算机上使用scp将文件移回了。

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

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

我取回的文件名名为Documents /trettia¿rsfirarätare

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

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

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

您能告诉我为什么会这样吗?


1
此问题可能涉及Unicode。如果将scp(或等效)从OS X复制(或等价)到Ubuntu(或从Ubuntu复制到OS X),但在Ubuntu计算机上会发生什么?
david6

我从mac电脑上看了一下这个问题,没有发现两行之间有任何区别,现在当我回到Ubuntu笔记本电脑时,即使在Takkat进行编辑之前,我也立即看到了这些正方形。
2013年

由于苹果计算机没有sshd,因此我不会尝试在ubuntu上从ubuntu切换到osx,但是在osx上scp-ing足以更改文件名。我只来回复制了一次,然后更改了名称,因此看来scp是更改名称的应用程序。
azzid 2013年

Answers:


8

在原始名称“ Documents /trettiårsfirarätare”中,字母“å”内部表示为U + 00E5带环的拉丁文小写字母A。这是此字符的常见表示形式。在返回的文件名中,它已变成字符对U + 0061拉丁文小写字母A U + 030A组合环。这是允许的,但不常见;这意味着将“å”分解为基本字符“ a”和一个变音符号。这些表示形式在Unicode中被规范地等效。这意味着通常希望视觉呈现是相同的,但是不需要(在Firefox中,在视觉上,它不是-这取决于字体和渲染软件)。程序可以将它们视为同等的,但它们不需要。例如,在文件系统中,它们很可能被视为不同的文件。

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

原因不明显。可能某些软件“认为”它将字符串转换为可分解所有可分解字符的规范化形式,可能是Unicode规范化形式D(NFD)

其余的则有些神秘。您为返回的文件名指定了“源代码”,即“文档/trettia˚rsfirara¨tare”,分解形式已被替换:变音符号已被其空格克隆,字符“˚”和“¨ ”。这是不正常的,它会更改数据的标识及其呈现方式。


我没有添加SourceCode部分。我可以看到字母之间在视觉表示上有所不同,第一个å的环比第二个小,但字符串相同。但是,当使用bash制表符补全时,它们并不等效。
2013年

实际上å本身就是一个字母,它不仅带有变音符号的a,就像h是字母而不是带有变音符号的nn一样
kasperd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.