Normalizzazione Unicode per nomi di file e testo copiato da pdf: s

4

Ho due problemi che sembrano correlati. Quando copi testo o nomi di file contenenti dieresi o per es. å ä ö, OS X non sembra gestire i personaggi in modo sano. Apparentemente questo è un problema ben noto. Ad esempio:

Ecco un esempio del solito risultato quando copi il testo da un nome file o da un pdf in Anteprima e incollalo in un editor. La prima riga è il risultato, l'altra è corretta.

Ladifferenzaèchiaramentevisibile,poichéilfontcorrente(CourierPrime)nonsupportalaprimaversione.

C'èunmodoperrisolverequestoproblema?Inalternativa,c'èqualcheOSX-servicedisponibileper"ripulire" il testo o normalizzarlo nel modo corretto?

    
posta trmdttr 01.03.2013 - 17:37
fonte

1 risposta

5

HFS + richiede che i nomi dei file siano in forma scomposta (LETIN SMALL LETTER A + COMBINING DIAERESIS) anziché in forma composta (LATIN SMALL LETTER A WITH DIAERESIS). Puoi usare iconv per convertire il testo in una forma composta:

$ echo -n ä | xxd -p
c3a4
$ touch ä
$ ls | tr -d '\n' | xxd -p
61cc88
$ ls | tr -d '\n' | iconv -f utf-8-mac -t utf-8 | xxd -p
c3a4

HFS+nonusaNFD(formanormalescomposta).Dal link :

Important: The terms used in this Q&A, precomposed and decomposed, roughly correspond to Unicode Normal Forms C and D, respectively. However, most volume formats do not follow the exact specification for these normal forms. For example, HFS Plus (Mac OS Extended) uses a variant of Normal Form D in which U+2000 through U+2FFF, U+F900 through U+FAFF, and U+2F800 through U+2FAFF are not decomposed (this avoids problems with round trip conversions from old Mac text encodings).

Anche questo potrebbe funzionare:

python -c 'import unicodedata as ud; print ud.normalize("NFC", u"\N{LATIN SMALL LETTER A}\N{COMBINING DIAERESIS}")'

    
risposta data 02.03.2013 - 16:56
fonte

Leggi altre domande sui tag