2010-09-20 17 views
5

alt textCome posso visualizzare i caratteri ASCII estesi in Perl?

Come visualizzare 192 personaggio simbolo (└) in Perl?

+8

192 in realtà non è ASCII. Il set ASCII termina a 128 (o 127, a seconda di cosa esattamente includi). –

+0

qual è il titolo perfetto per questa domanda? – Tree

+3

Se vuoi stampare il personaggio con un valore di 192, devi dirci quale codifica di carattere stai usando. Non è ASCII, poiché ASCII definisce solo 128 caratteri? Stai usando uno dei set di caratteri estesi? Forse cp1252 o ISO-8859? –

risposta

11

Quello che si desidera è poter stampare unicode e la risposta è perldoc perluniintro.

È possibile utilizzare \x{nnnn} dove n è l'identificatore esadecimale, o si può fare \N{...} con il nome:

perl -E 'say "\x{2514}"; use charnames; say "\N{BOX DRAWINGS LIGHT UP AND RIGHT}"' 
+0

Ho modificato l'esempio di codice per essere pertinente alla domanda. Se non sei d'accordo, puoi facilmente annullare questo. – daxim

+0

@daxim: Grazie! – Daenyth

5

che sembra la codifica della pagina codice 437. Perl è probabilmente solo in uscita dai byte che tu gli dai. E probabilmente il tuo terminale si aspetta UTF8.

Quindi è necessario decodificarlo in Unicode, quindi ricodificarlo in UTF-8.

MODIFICA: codifica corretta.

+0

Oppure modificare le impostazioni del terminale. :) –

+4

No, è IBM437. Vedi [IANA] (http://www.iana.org/assignments/character-sets), [RFC 1345] (http://datatracker.ietf.org/doc/rfc1345/), [it.Wikipedia] (http : //en.wikipedia.org/wiki/IBM437). – daxim

8

Per utilizzare esattamente questi codici il terminale deve supportare Code Page 437, che contiene frame. In alternativa è possibile utilizzare derivato CP850 con meno caratteri di inscatolamento. Questi caratteri di boxing esistono anche come Unicode Block Elements. Il carattere che si desidera in perl è indicato come \N{U+2514}. Maggiori dettagli in perlunicode

+0

'' \ x {2514} "' lo fa anche. Questa sintassi è spiegata in [perlop] (http://p3rl.org/op#Quote-and-Quote-like-Operators). – daxim

3

Come al solito, Jon Skeet lo inchioda: il codice 192 si trova nell'intervallo "extended ASCII". Ti suggerisco di seguire @Douglas Leeder's advice, ma non sono sicuro di quale codifica www.LookupTables.com ti stia dando; ISO-8859-1 pensa 192 mappe a "À" e Mac OS Roman pensa a "¿".

+3

"ASCII esteso" è una famiglia di codifiche. Quello nella domanda è IBM437. Vedi [IANA] (http://www.iana.org/assignments/character-sets), [RFC 1345] (http://datatracker.ietf.org/doc/rfc1345/), [it.Wikipedia] (http : //en.wikipedia.org/wiki/IBM437). – daxim

Problemi correlati