[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Locales y mayúsculas y minúsculas



El 30/10/16 a las 18:40, José Miguel (sio2) escribió:
Un saludo a la lista. A ver si alguno es capaz de explicarse cómo sucede
esto en mi sistema.

Resulta que tengo estas locales:

$ locale
LANG=es_ES.UTF-8
LANGUAGE=
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=

Vamos, que mi sistema está configurado en castellano y utf-8. Todo me
marcha bien, pero he intentado lo siguiente y no he obtenido el
resultado esperado:

$ tr '[:lower:]' '[:upper:]' <<<"adiós"
ADIóS
$ awk '{print toupper($0)}' <<<"adiós"
ADIóS

O sea, el sistema no es capaz de saber que la mayúscula de la ó es la Ó.

Yo tengo Debian testing (Stretch) con la misma configuración locale, y si es cierto que con tr me da el mismo resultado, con awk lo hace bien:

$ locale
LANG=es_ES.utf8
LANGUAGE=
LC_CTYPE="es_ES.utf8"
LC_NUMERIC="es_ES.utf8"
LC_TIME="es_ES.utf8"
LC_COLLATE="es_ES.utf8"
LC_MONETARY="es_ES.utf8"
LC_MESSAGES="es_ES.utf8"
LC_PAPER="es_ES.utf8"
LC_NAME="es_ES.utf8"
LC_ADDRESS="es_ES.utf8"
LC_TELEPHONE="es_ES.utf8"
LC_MEASUREMENT="es_ES.utf8"
LC_IDENTIFICATION="es_ES.utf8"
LC_ALL=

$ tr '[:lower:]' '[:upper:]' <<<"adiós"
ADIóS

$ awk '{print toupper($0)}' <<<"adiós"
ADIÓS

No se aprecia, pero sale la Ó en mayúscula y con el acento y todo...


De hecho, no es capaz de saber que "ó" es una letra:

$ tr -d '[:alpha:]' <<<"adiós"
ó


Si, a mi me pasa igual...

Sin embargo, tengo mi sistema (LC_CTYPE en concreto) en utf8, ¿no
debería ser capaz?

python sí funciona bien:

$ python3 -c 'print("adiós".upper())'
ADIÓS



--
www.LinuxCounter.net

Registered user #369215



Reply to: