Caratteri accentati e reindirizzamento del terminale

3

Ho problemi con i caratteri accentati nei nomi dei file nel terminale. Considera quanto segue:

$ touch leão.png
$ ls > test.txt
$ open -a TextWrangler test.txt

Icaratteriaccentatiintest.txtnonsonocorretti.Eccoalcunifattipossibilmenterilevanti:

  • UsoTerminalconleimpostazionipredefinite;lacodificadeicaratterièimpostatasuUTF-8e"Imposta le variabili di ambiente locale all'avvio" è selezionata.
  • l'output di locale nella shell è:

    LANG="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_CTYPE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_ALL="en_US.UTF-8"
    
  • La codifica predefinita di TextWrangler è UTF-8; cercare di riaprire il file in qualsiasi altra codifica peggiora le cose.

  • Sto utilizzando OS 10.6.8.

Aggiorna

In risposta ai commenti, ecco alcune ulteriori informazioni:

  • L'output di od -tx1 test.txt è:

    0000000    6c  65  61  cc  83  6f  2e  70  6e  67  0a  74  65  73  74  2e
    0000020    74  78  74  0a                                                
    0000024
    
  • Se faccio echo leão.png > test2.txt il testo viene mostrato correttamente in TextWrangler
  • Apertura test.txt nelle visualizzazioni di TextEdit: leaÃÉo.png
  • Apertura test.txt nei display di jEdit: leaÃÉo.png
  • Apertura test.txt nei display AlphaX: leaÃÉo.png
  • Apertura test.txt in emacs da all'interno di display del terminale: leão.png

Mi piacerebbe davvero essere in grado di lavorare con nomi di file non ASCII all'interno della shell. Come posso farlo funzionare?

    
posta Alan Munn 11.11.2011 - 19:02
fonte

1 risposta

2

Potrei non essere in grado di risolvere completamente il tuo problema, ma posso spiegare un po 'di quello che sta succedendo. La shell si sta comportando correttamente; TextWrangler non sta affrontando correttamente con un requisito leggermente avanzato.

In test.txt , hai un a (lettera minuscola A di varietà giardino seguita da una combinazione tilde ( Unicode carattere U + 0303). La combinazione di personaggi generalizza i personaggi con accenti. A tutti gli effetti, ã (U + 0061 LATIN SMALL LETTER A seguito da U + 0303 COMBINING TILDE) dovrebbe essere equivalente a ã (U + 00E3 LATINA PICCOLA LETTERA A CON TILDE).

Molto probabilmente, se Unicode fosse stato inventato adesso, esisterebbero solo combinazioni di caratteri e useremmo sempre a ; ma Unicode ha anche molti caratteri per la compatibilità con le codifiche esistenti precedenti. Poiché questi sono i personaggi che quasi tutti usano, molti programmi non supportano la combinazione di caratteri così bene, se non del tutto. In particolare, sembra che TextWrangler non li supporti affatto e mostri invece un segno "Non so cosa sia".

In generale, OSX preferisce i caratteri scomposti (cioè lettera + accento combinato). In particolare, per quanto ne so, tutti i nomi dei file sono normalizzati in questo modulo. Normalizzare i nomi dei file (cioè assicurarti che se ci sono diverse forme possibili di un nome di file, quindi uno specifico sarà sempre usato) è molto utile, perché evita di non riuscire a trovare leão.png quando stai cercando leão.png . (Non vedi una differenza tra i due? Bene, il tuo browser gestisce la combinazione dei caratteri correttamente.)

La soluzione ideale sarebbe utilizzare un editor che gestisca correttamente la combinazione dei caratteri. Se vuoi restare fedele a TextWrangler, assicurati di avere l'ultima versione, e se lo fai, contatta gli autori per il supporto. Con TextEdit, jEdit o AlphaX, c'è ancora speranza: stanno mostrando il file come Mac Roman invece di UTF-8 ; prova a passare a UTF-8.

    
risposta data 12.11.2011 - 01:50
fonte

Leggi altre domande sui tag