2011-05-03 19 views

Respuesta

8
-bash$ perl -we 'use utf8; binmode STDOUT, ":utf8"; print lc "É UM MAÇO"' 
é um maço 

utf8 indica el texto de su programa es Unicode. binmode asegura la salida adecuada de caracteres anchos.

También puede use Encode;, consulte el docs.

+1

La bandera '-CSA' le dirá a Perl que tanto std {in, out, err} como los argumentos de' @ ARGV' (pero no su contenido de archivo a menos que agregue 'D' a' -CSAD') están en UTF- 8, pero aún necesitas el 'use utf8' internamente. – tchrist

+0

@tchrist: gracias, no sabía de esta opción. – Dallaylaen

1

Trate de añadir

use locale; 

en su guión. Debe hacer varias funciones, incluyendo lc, trabajar con acentos. Guión completo de pruebas:

use strict; use warnings; 
use locale; 
use utf8; 

print lc('É UM MAÇO'); # gives "é um maço" 
+1

Esto no es una muy buena idea. – tchrist

+1

@tchrist - ¿puedes por favor elaborar? Sé que el soporte de configuración regional varía, pero funcionó bien para mi manipulación de texto checo en máquinas con Windows. – bvr

+0

las configuraciones regionales son una forma muy antigua y restringida ** pre-Unicode ** de tratar el texto. Son terriblemente poco transportables, muy defectuosos, y no funcionan en absoluto con nada, excepto los datos heredados de 8 bits, y solo algunas veces. Lo correcto es establecer la capa de codificación para que su material heredado se traduzca a Unicode, y luego confiar en las reglas Unicode (adaptables) para el mapeo y la intercalación de casos. Eso es infinitamente más portátil. – tchrist

Cuestiones relacionadas