Usando Perl, estoy tratando de minúsculas con acentos y caracteres especiales con lc()
pero no puedo.Perl - Letras de acento minúsculas
Por ejemplo:
É UM Maco
vuelve
É um Maco
Usando Perl, estoy tratando de minúsculas con acentos y caracteres especiales con lc()
pero no puedo.Perl - Letras de acento minúsculas
Por ejemplo:
É UM Maco
vuelve
É um Maco
-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.
¿Has mirado en este http://perldoc.perl.org/functions/lc.html y se aseguró de que tienen todo su configuración se configuró correctamente. También sería bueno publicar un código mínimo para reproducir el efecto.
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"
Esto no es una muy buena idea. – tchrist
@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
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
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
@tchrist: gracias, no sabía de esta opción. – Dallaylaen