• Publicidad

Sort con 'ñ'

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Sort con 'ñ'

Notapor dgf » 2008-11-21 05:25 @267

Hola otra vez,

Tengo un problema con la ñ. Trabajo en UTF8 y al hacer un sort ordena mal la ñ ¿Alguien sabe cómo puedo solucionarlo?

Muchas gracias
dgf
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2008-11-19 04:45 @239

Publicidad

Notapor explorer » 2008-11-21 06:16 @303

El tema de la codificación distinta de la de latin1 es compleja... deriva de cuando a alguien se le ocurrió crear una torre tan alta como para desafiar a Dios... y claro... cuando le haces enfadar, pasa lo que pasa... :)

Lo que debes hacer es indicar a Perl que tu programa está escrito en utf8:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict;
use warnings;
use diagnostics;

use utf8;
use locale;
use open OUT => ':locale';

my @x = split q{|}, "áéíóúüñçÁÉÍÓÚÜÑÇ";

print join q{},      @x;
print join q{}, sort @x;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
La salida es:
Código: Seleccionar todo
áéíóúüñçÁÉÍÓÚÜÑÇ
ÁÇÉÍÑÓÚÜáçéíñóúü

Y como ves, la 'ñ' se ha colocado correctamente entre la 'í' y la 'ó'. Y las mayúsculas antes que las minúsculas.

Para ser más estrictos, deberías poner siempre 'use locale' para indicar a Perl que debe usar la codificación de la terminal en la que se está ejecutando. Esto se refiere a la ordenación de las letras, para los operadores lógicos de comparación y otras (sort(), lc(), uc(), ...).

Otro ejemplo, con palabras:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use utf8;
use locale;
use open OUT => ':locale';

@x = qw( coñe cuña cono cana coño cano cone coña caña cena cona cuna caño );

print join q{ },      @x;
print join q{ }, sort @x;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Sale:
Código: Seleccionar todo
coñe cuña cono cana coño cano cone coña caña cena cona cuna caño
cana cano caña caño cena cona cone cono coña coñe coño cuna cuña
Última edición por explorer el 2008-11-24 04:18 @221, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron