2010-09-20 17 views
5

alt text¿Cómo puedo visualizar caracteres de códigos ASCII extendidos en Perl?

Cómo visualizar 192 caracteres de símbolos (└) en Perl?

+8

192 no es realmente ASCII. El conjunto ASCII termina en 128 (o 127, dependiendo de qué incluye exactamente). –

+0

¿cuál es el título perfecto para esta pregunta? – Tree

+3

Si desea imprimir el personaje con un valor de 192, debe indicarnos qué codificación de caracteres está utilizando. No es ASCII, ya que ASCII solo define 128 caracteres. ¿Estás usando uno de los juegos de caracteres extendidos? Quizás cp1252 o ISO-8859? –

Respuesta

11

Lo que quiere es poder imprimir unicode, y la respuesta está en perldoc perluniintro.

Puede utilizar \x{nnnn} donde n es el identificador hexadecimal, o puede hacerlo \N{...} con el nombre:

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

He editado el código del ejemplo para que sea relevante para la pregunta. Si no está de acuerdo, puede deshacer esto fácilmente. – daxim

+0

@daxim: ¡Gracias! – Daenyth

5

que se parece a la codificación de la página de códigos 437. Es probable que Perl solo genere bytes que usted le da. Y su terminal probablemente esté esperando UTF8.

Por lo tanto, debe decodificarlo en Unicode y luego volver a codificarlo en UTF-8.

EDITAR: Corregir la codificación.

+0

O bien, cambie la configuración de su terminal. :) –

+4

No, es IBM437. Ver [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

Para usar exactamente estos códigos, su terminal debe admitir Code Page 437, que contiene marcos. Alternativamente, puede utilizar el derivado CP850 con menos caracteres de boxeo. Tales personajes de boxeo también existen como Unicode Block Elements. El carácter que desea en perl se indica como \N{U+2514}. Más detalles en perlunicode

+0

'" \ x {2514} "' lo hace, también. Esta sintaxis se explica en [perlop] (http://p3rl.org/op#Quote-and-Quote-like-Operators). – daxim

3

Como es habitual, Jon Skeet lo clava: el código 192 está en el rango "extended ASCII". Sugiero que siga @Douglas Leeder's advice, pero no estoy seguro de qué codificación le está dando www.LookupTables.com; ISO-8859-1 piensa 192 mapas a "À", y Mac OS Roman piensa que es "¿".

+3

"ASCII extendido" es una familia de codificaciones. El que está en la pregunta es IBM437. Ver [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

Cuestiones relacionadas