Unicode, Screen y Debian Jessie

Tengo una instalación OSMC funcionando en una Raspberry PI desde hace años, actualmente ejecutando Debian Jessie. Cuando conecto por SSH y listo un fichero con caracteres españoles en el nombre, veo algo de este estilo:

jcea@osmcpi:/tmp$ ls *mkv
XXXXX sue??os (2010) [DUAL-subs-Opus].jcea.mkv

La ñ se pierde.

Cuando lanzo un procesado particular del fichero, veo esto:

jcea@osmcpi:/tmp$ codigo_secreto.py *mkv
XXXXX sue\udcc3\udcb1os (2010) [DUAL-subs-Opus].jcea.mkv.meta
 71%|███████████████████████████           | 113/159 [00:21<02:22,  3.09s/block]

Aquí la ñ se nos muestra como su codificación unicode UTF-8.

Lanzando lo anterior dentro de una sesión screen, aparece lo siguiente:

jcea@osmcpi:/tmp$ codigo_secreto.py *mkv
XXXXX sue\udcc3\udcb1os (2010) [DUAL-subs-Opus].jcea.mkv.meta
 69%|���������������������������           | 110/159 [00:08<06:58,  8.55s/block]

Bajo screen, perdemos incluso la barra de progreso.

Veamos la configuración de locale:

jcea@osmcpi:~$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME=jcea.utf8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Todo parece correcto, pero no funciona bien.

Tras varios experimentos, incluyendo lanzar screen como screen -U (que casi funciona, pero no del todo), la solución es la siguiente:

  1. Añadimos export LC_ALL=en_US.UTF-8 a nuestro .bashrc.

  2. Añadimos lo siguiente a nuestro fichero .screenrc:

    defutf8 on
    utf8 on
    

Con esto ya sale lo que tiene que salir, tanto en la conexión SSH directa como bajo screen:

jcea@osmcpi:/tmp$ ls *mkv
XXXXX sueños (2010) [DUAL-subs-Opus].jcea.mkv
jcea@osmcpi:/tmp$ codigo_secreto.py *mkv
XXXXX sueños (2010) [DUAL-subs-Opus].jcea.mkv.meta
 72%|███████████████████████████▏          | 114/159 [00:22<02:40,  3.56s/block]
jcea@osmcpi:/tmp$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Misión cumplida.