ubuntu vs osx?


10

Não tenho certeza se essa é uma pergunta do ubuntu ou osx, mas vou começar por aqui. Deixarei para os mods passar a pergunta para AskDifferent, se for mais apropriado.

Mudei um arquivo do ubuntu para osx usando scp na máquina da apple. Eu editei o arquivo na máquina da apple. Depois movi o arquivo de volta, novamente usando scp na máquina da apple.

O nome do arquivo do arquivo de origem era Documents / trettiårsfirarätare .

  • Código fonte: Documents/trettiårsfirarätare

O nome do arquivo que voltei tinha o nome Documents / trettiårsfirarätare .

  • Código fonte: Documents/trettia˚rsfirara¨tare

Embora possam parecer semelhantes, as letras å e ä são realmente diferentes entre elas. Em nenhum momento eu mudei o nome do arquivo.

Isso faz pouca diferença técnica para mim, apenas mudei o nome do arquivo de volta para o que o ubuntu considera å e ä, mas despertou minha curiosidade.

Você pode me explicar por que isso aconteceu?


1
Esse problema provavelmente envolverá Unicode. O que acontece se você scp (ou equivalente) copia do OS X para o Ubuntu (ou Ubuntu para OS X), mas na máquina Ubuntu?
David6

Eu olhei para essa pergunta em um mac e não vi nenhuma diferença entre as linhas. Agora, quando voltei para o meu laptop Ubuntu, vi os quadrados imediatamente, mesmo antes da edição de Takkat.
Alvar

Eu não tentarei scp-ing do ubuntu para osx no ubuntu devido à máquina apple não ter sshd, mas scp-ing no osx é suficiente para alterar o nome do arquivo. Eu apenas o copiei uma e outra vez e o nome foi alterado, então parece que scp é o aplicativo que altera o nome.
azzid

Respostas:


8

No nome original “Documents / trettiårsfirarätare”, a letra “å” é representada internamente como U + 00E5 PEQUENA LETRA LATINA A COM O ANEL ACIMA. Esta é a representação comum desse personagem. No nome do arquivo que você voltou, ele foi direcionado para o par de caracteres U + 0061 LETRA PEQUENA LATINA A ANEL COMBINANTE U + 030A ACIMA. Isso é permitido, mas não é comum; significa decompor “å” no caractere base “a” e uma marca diacrítica combinada. Essas representações são declaradas como canonicamente equivalentes no Unicode; isso significa que a apresentação visual normalmente é a mesma, mas não precisa (aqui, no SO, como visto no Firefox, não é - isso depende da fonte e do software de renderização). Os programas podem tratá-los como equivalentes, mas não precisam. Em um sistema de arquivos, por exemplo, eles podem muito bem ser tratados como diferentes.

Da mesma forma, a letra “ä” é decomposta em U + 0061 LETRA PEQUENA LATINA A U + 0308 DIAERESE COMBINADA.

A razão para isso não é óbvia. Possivelmente, algum software “pensa” que deve converter cadeias de caracteres em um formulário de normalização que decompõe todos os caracteres decomposíveis, provavelmente o NFD ( Unicode Normalization Form D)

O resto é um pouco mais misterioso. O que você especifica como “Código-fonte” para o nome do arquivo que recebeu, “Documents / trettia˚rsfirara¨tare”, as formas decompostas foram alteradas: as marcas diacríticas foram substituídas por seus clones de espaçamento, os caracteres “˚” e “¨ ”. Isso não é normal e altera a identidade dos dados e sua renderização.


A parte SourceCode não foi adicionada por mim. Percebo que há uma diferença entre as letras em sua representação visual; a primeira tem um anel menor que o segundo, mas, além disso, as cordas parecem iguais. Eles não são equivalentes ao usar a conclusão da guia bash.
precisa saber é

Na verdade, å é uma letra por si só, não é apenas um a com uma marca diacrítica, assim como h é uma letra e não apenas en com uma marca diacrítica.
kasperd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.