azz*_*zid 10 special-characters macosx apple encoding utf-8
不确定这是 ubuntu 还是 osx 问题,但我将从这里开始。如果更合适,我会将其留给 mods 将问题移至 AskDifferent。
我在苹果机器上使用 scp 将文件从 ubuntu 移动到 osx。我在苹果机器上编辑了文件。然后我将文件移回,再次在苹果机器上使用 scp 。
源文件的文件名是Documents/trettiårsfirarätare。
Documents/trettiårsfirarätare我得到的文件名是Documents/trettia?rsfirara?tare。
Documents/trettia?rsfirara¨tare虽然这些看起来很相似,但它们之间的字母 å 和 ä 实际上是不同的。我从未更改过文件名。
这对我来说没有什么技术上的区别,我只是将文件名改回 ubuntu 认为的 å 和 ä,但这激起了我的好奇心。
你能向我解释为什么会这样吗?
在原名“Documents/trettiårsfirarätare”中,字母“å”在内部表示为 U+00E5 LATIN SMALL LETTER A WITH RING ABOVE。这是这个字符的常见表示。在您返回的文件名中,它已转换为字符对 U+0061 LATIN SMALL LETTER A U+030A COMBINING RING ABOVE。这是允许的,但不常见;这意味着将“å”分解为基本字符“a”和组合变音符号。这些表示在 Unicode 中被声明为等价的;这意味着通常期望视觉呈现是相同的,但它不需要(在这里,在 SO,正如在 Firefox 中所见,它不是——这取决于字体和渲染软件)。程序可能会将它们视为等价的,但它们不需要。例如,在文件系统中,它们很可能被视为不同的。
类似地,字母“ä”被分解为 U+0061 拉丁文小写字母 A U+0308 COMBINING DIAERESIS。
原因并不明显。可能某些软件“认为”应该将字符串转换为分解所有可分解字符的规范化形式,可能是Unicode 规范化形式 D (NFD)
其余的有点神秘。您为返回的文件名指定为“源代码”的内容,“Documents/trettia?rsfirara¨tare”,分解的形式已被修改:变音符号已被其间隔克隆替换,字符“?” 和”。这是不正常的,它改变了数据的身份及其呈现。
| 归档时间: |
|
| 查看次数: |
356 次 |
| 最近记录: |