15.03.2020 Views

perl-language-es

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Nota : al imprimir texto en el terminal, asegúrese de que sea compatible con UTF-8. *

Puede haber relaciones complejas y contraintuitivas entre la salida y la codificación de origen. Al

ejecutarse en una terminal UTF-8, puede encontrar que agregar el pragma utf8 parece romper las

cosas:

$ perl -e 'print "Møøse\n"'

Møøse

$ perl -Mutf8 -e 'print "Møøse\n"'

Mse

$ perl -Mutf8 -CO -e 'print "Møøse\n"'

Møøse

En el primer caso, Perl trata la cadena como bytes en bruto y los imprime así. Como estos bytes

son UTF-8 válidos, se ven correctos aunque Perl realmente no sabe qué caracteres son (por

ejemplo, la length("Møøse") devolverá 7, no 5). Una vez que agrega -Mutf8 , Perl decodifica

correctamente la fuente UTF-8 en caracteres, pero la salida está en modo Latin-1 por defecto y la

impresión de Latin-1 en un terminal UTF-8 no funciona. Solo cuando cambie STDOUT a UTF-8

usando -CO , la salida será correcta.

use utf8 no afecta la codificación de E / S estándar ni los manejadores de archivos!

Manejo de UTF-8 inválido

Lectura inválida de UTF-8

Al leer datos codificados en UTF-8, es importante tener en cuenta el hecho de que los datos

codificados en UTF-8 pueden ser inválidos o mal formados. Dichos datos generalmente no

deberían ser aceptados por su programa (a menos que sepa lo que está haciendo). Cuando se

encuentran datos malformados inesperadamente, se pueden considerar diferentes acciones:

• Imprima el seguimiento de pila o el mensaje de error, y cancele el programa correctamente,

o

• Inserte un carácter de sustitución en el lugar donde apareció la secuencia de bytes con

formato incorrecto, imprima un mensaje de advertencia a STDERR y continúe leyendo

mientras no sucede nada.

Por defecto, Perl le warn acerca de la codificación de fallos, pero no abortará su programa. Puede

hacer que su programa aborte haciendo que las advertencias de UTF-8 sean fatales, pero tenga

en cuenta las advertencias en Advertencias fatales .

El siguiente ejemplo escribe 3 bytes en la codificación ISO 8859-1 al disco. A continuación,

intenta volver a leer los bytes de nuevo como datos codificados en UTF-8. Uno de los bytes, 0xE5 ,

es una secuencia de un byte UTF-8 no válida:

use strict;

use warnings;

use warnings FATAL => 'utf8';

https://riptutorial.com/es/home 113

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!