ubuntu å vs osx å?


10

Nie jestem pewien, czy to pytanie dotyczące Ubuntu czy OSX, ale zacznę tutaj. Zostawiam modom, aby przenieśli pytanie do AskDifferent, jeśli jest bardziej odpowiednie.

Przeniesiłem plik z Ubuntu do OSX za pomocą SCP na maszynie Apple. Zedytowałem plik na maszynie Apple. Następnie przeniosłem plik z powrotem, ponownie za pomocą scp na maszynie Apple.

Nazwa pliku źródłowego to Documents / trettiårsfirarätare .

  • Kod źródłowy: Documents/trettiårsfirarätare

Nazwa pliku, którą otrzymałem, miała nazwę Documents / trettiårsfirarätare .

  • Kod źródłowy: Documents/trettia˚rsfirara¨tare

Choć mogą wyglądać podobnie, litery å i ä są w rzeczywistości różne. W żadnym momencie nie zmieniłem nazwy pliku.

Nie ma to dla mnie żadnej różnicy technicznej, właśnie zmieniłem nazwę pliku z powrotem na to, co Ubuntu uważa za å i ä, ale to wzbudziło moją ciekawość.

Czy możesz mi wyjaśnić, dlaczego tak się stało?


1
Ten problem prawdopodobnie dotyczy Unicode. Co się stanie, jeśli scp (lub ekwiwalent.) Skopiujesz z OS X na Ubuntu (lub Ubuntu na OS X), ale na komputerze Ubuntu?
david6,

Spojrzałem na to pytanie z komputera Mac i nie zauważyłem żadnej różnicy między liniami, teraz kiedy wróciłem do mojego laptopa Ubuntu, natychmiast zobaczyłem kwadraty, nawet przed edycją Takkata.
Alvar

Nie będę próbował scpowania z Ubuntu do OSX na Ubuntu, ponieważ maszyna Apple nie ma sshd, ale scpowanie na OSX wystarczy, aby zmienić nazwę pliku. Skopiowałem go tylko raz tam iz powrotem, a nazwa została zmieniona, więc wygląda na to, że scp to aplikacja zmieniająca nazwę.
azzid

Odpowiedzi:


8

W pierwotnej nazwie „Documents / trettiårsfirarätare” litera „å” jest wewnętrznie reprezentowana jako U + 00E5 LATIN MAŁY LITER A Z PIERŚCIENIEM POWYŻEJ. Jest to wspólna reprezentacja tej postaci. W nazwie pliku, którą odzyskałeś, została zmieniona na parę znaków U + 0061 LATIN MAŁY LITER A U + 030A ŁĄCZĄCY PIERŚCIEŃ POWYŻEJ. Jest to dozwolone, ale nie powszechne; oznacza rozkładanie „å” na postać podstawową „a” i łączący znak diakrytyczny. Te reprezentacje są zadeklarowane jako kanonicznie równoważne w Unicode; oznacza to, że zwykle oczekuje się, że prezentacja wizualna będzie taka sama, ale nie musi (tutaj, w SO, tak jak w przeglądarce Firefox, nie jest - zależy to od czcionki i oprogramowania do renderowania). Programy mogą traktować je jako równoważne, ale nie muszą. Na przykład w systemie plików mogą być traktowane inaczej.

Podobnie litera „ä” rozkłada się na U + 0061 LATIN MAŁY LITER A U + 0308 ŁĄCZĄCA DIAERESE.

Powód tego nie jest oczywisty. Być może niektóre programy „myślą”, że powinny konwertować ciągi znaków na postać normalizacyjną, która rozkłada wszystkie znaki rozkładalne, prawdopodobnie na postać normalizacyjną Unicode D (NFD)

Reszta jest nieco bardziej tajemnicza. To, co określasz jako „Kod źródłowy” dla odzyskanej nazwy pliku, „Dokumenty / trettia˚rsfirara¨tare”, zdekomponowane formy zostały zmungowane: znaki diakrytyczne zostały zastąpione przez ich klony odstępów, znaki „˚” i „¨ ”. Nie jest to normalne i zmienia zarówno tożsamość danych, jak i ich renderowanie.


Część SourceCode nie została przeze mnie dodana. Widzę, że istnieje różnica między literami w ich wizualnej reprezentacji, pierwsza å ma mniejszy pierścień niż druga, ale poza tym ciągi wyglądają tak samo. Nie są one jednak równoważne, gdy używa się uzupełniania tabulacji bash.
azzid

Właściwie å jest list na własną rękę, to nie tylko z diakrytykę znak, podobnie jak H jest literą, a nie tylko i n z diakrytykę znaku.
kasperd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.