2010-09-20 6 views
5

alt textComment afficher les caractères ASCII étendus en Perl?

Comment afficher 192 symbole de caractères (└) en perl?

+8

192 n'est pas réellement ASCII. L'ensemble ASCII se termine à 128 (ou 127, selon ce que vous incluez exactement). –

+0

quel est le titre parfait pour cette question? – Tree

+3

Si vous souhaitez imprimer le caractère avec une valeur de 192, vous devez nous indiquer l'encodage de caractères que vous utilisez. Ce n'est pas ASCII, car ASCII ne définit que 128 caractères? Utilisez-vous l'un des jeux de caractères étendus? Peut-être cp1252 ou ISO-8859? –

Répondre

11

Ce que vous voulez, c'est pouvoir imprimer unicode, et la réponse est perldoc perluniintro.

Vous pouvez utiliser \x{nnnn} où n est l'identificateur hexadécimal, ou vous pouvez faire \N{...} avec le nom:

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

J'ai modifié l'exemple de code pour être pertinent à la question. Si vous n'êtes pas d'accord, vous pouvez facilement annuler cela. – daxim

+0

@daxim: Merci! – Daenyth

5

Cela ressemble à la page de code 437 encodage. Perl est probablement juste en train de sortir des octets que vous lui donnez. Et votre terminal s'attend probablement à UTF8.

Vous devez donc le décoder en Unicode, puis le réencoder en UTF-8.

EDIT: codage correct.

+0

Ou, changez les paramètres de votre terminal. :) –

+4

Non, c'est IBM437. Voir [IANA] (http://www.iana.org/assignments/character-sets), [RFC 1345] (http://datatracker.ietf.org/doc/rfc1345/), [en.Wikipedia] (http : //en.wikipedia.org/wiki/IBM437). – daxim

8

Pour utiliser exactement ces codes, votre terminal doit prendre en charge Code Page 437, qui contient des trames. Alternativement, vous pouvez utiliser CP850 avec moins de caractères de boxe. Ces caractères de boxe existent également sous la forme Unicode Block Elements. Le caractère que vous voulez en perl est noté \N{U+2514}. Plus de détails dans perlunicode

+0

'" \ x {2514} "' le fait aussi. Cette syntaxe est expliquée dans [perlop] (http://p3rl.org/op#Quote-and-Quote-like-Operators). – daxim

3

Comme d'habitude, Jon Skeet le clique: le code 192 est dans la gamme "extended ASCII". Je vous suggère de suivre @Douglas Leeder's advice, mais je ne suis pas sûr de l'encodage que www.LookupTables.com vous donne; ISO-8859-1 pense 192 cartes à "À", et Mac OS Roman pense que son "¿".

+3

"Extended ASCII" est une famille de codages. Celui de la question est IBM437. Voir [IANA] (http://www.iana.org/assignments/character-sets), [RFC 1345] (http://datatracker.ietf.org/doc/rfc1345/), [en.Wikipedia] (http : //en.wikipedia.org/wiki/IBM437). – daxim

Questions connexes