Renombrar archivos con caracteres raros en el nombre
Esto solo pasa con archivos que se han creado y/o comprimido en entorno Windows, ahora explico el porqué. El problema no proviene de un fallo de incompatibilidad o configuración de Debian GNU/Linux. Todo lo contrario procede de una incompatibilidad entre el sistema Windows donde el fichero fue creado y/o comprimido y el resto de sistemas operativos existentes.
En Debian GNU/Linux :
Al igual que en casi todos los sistemas operativos: Ubuntu, Red hat, Centos, MacOSX, Android, y un largo etc... el formato de codificación de caracteres utilizado es UTF-8, el cual usa un estándar, llamado Unicode, creado y adoptado por la mayoría de empresas del sector, y diseñado para facilitar el tratamiento informático, transmisión y visualización de textos de múltiples lenguajes y disciplinas técnicas además de textos clásicos de lenguas muertas.
En Microsoft Windows :
El problema reside en, que el fichero fue comprimido en Microsoft Windows y, como siempre suele hacer Microsoft, no utiliza los estándares tales como UTF-8, usa sus propios formato de codificación no compatibles con el resto (Windows-1252 para idiomas occidentales, Windows-1253 para griego, Windows-1254 para turco, Windows-1256 para árabe,...).
Gestor de archivos Dolphin
En Dolphin los archivos con dichos caracteres raros en el nombre son inaccesibles, y no podemos hacer prácticamente nada:
- No se puede reproducir (si son archivos multimedia)
- Ni se puede ejecutar (si son archivos de programa; como .Jar de Java, .exe de wine)
- No se puede ver la vista preliminar
- No se puede copiar
- No se puede mover
- No se puede renombrar
- No se puede borrar
En resumen Dolphin no puede gestionar dichos archivos. Esto es un error importante que tiene solución en Debian utilizando otros gestores de archivos, pero que aun no ha sido implementado en Dolphin. Esperamos que los desarrolladores los implementen en futuras versiones.
Soluciones
Existen varias soluciones (cosa normal en entorno Unix / Linux) para corregir este error.
Tales como usar algunos de estos comandos en consola o algunos de estos gestores de archivos en entorno gráfico:
En linea de comando desde una consola:
- mv
- convmv
- mc (Midnight Commander)
En entorno gráfico:
- Konqueror
- Nautilus
- PcMan File Manager
- Thunar
Algunas capturas de pantallas
Konqueror - observamos como ha detectado el error en la codificación
Aquí vemos como hemos seleccionado el primero de ellos, con el botón derecho del ratón y seleccionamos Cambiar el nombre....
Aquí aparece el nombre con el error para poder substituirlo
Ya le hemos indicado el nuevo nombre, en este caso le hemos corregido el error.
Aquí podemos observar como tenemos 3 archivos que hemos corregido el error.
___________________________________________________________________________
Nautilus, aquí observamos como nautilus, también detecta y puede corregir el error
----------------------------------------------------------------------------------------------------------
PCManFM, este otro gestor de archivos también esta preparado para corregir el error, en las siguientes capturas de pantallas vemos la secuencia de como corregir el error.
=============================================
Thunar, este gestor de archivos es el único capaz de corregir el error en multiples ficheros a la misma vez.
convmv: Renombrar múltiples archivos o carpetas desde consola
El comando convmv se utiliza para cambiar la codificación de caracteres de los nombres de archivo. No viene instalado por defecto en Debian GNU/Linux. Para instalarlo usamos el programa synaptic, tal y como hacemos siempre en este blog.
# apt-get install convmv
Después, nos situamos en la carpeta dónde están los archivos o carpetas que se quieren corregir y se ejecuta este comando:
convmv -r -f cp1252 -t utf-8 * --notest
Significado de los parámetros del comando:
- -f - especifica la codificación de caracteres que tienen los archivos que se quieren convertir.
- cp1252 - codificación de caracteres por defecto de Windows
- -t - especifica la codificación de caracteres a la que se quiere convertir los nombres de archivo.
- utf-8 - codificación de caracteres por defecto en Debian.
- * - indica que el cambio afectará a todos los archivos.
--notest - especifica que no es una prueba. Si no se incluye, el comando sólo muestra cómo quedarían los nombres de archivo, pero no realiza ningún cambo.
OBSERVACION: Conviene ejecutar primero el comando sin el parámetro --notest. Si el resultado no es el esperado, se puede probar con otra codificación de caracteres. Para ver la lista de codificaciones disponibles, ejecutar convmv --list. Si alguno de los parámetros indicados no es útil, no hay que incluirlo. Para ver la lista completa de opciones del comando, ejecutar convmv --help y para ver su página de manual, ejecutar man convmv. Para salir del comando man, pulsar q.
Algunas capturas de pantallas
Aquí podemos ver como dolphin a detectado el error en la codificación de los caracteres, cambiando las vocales acentuadas por el signo + seguido de una interrogación �
Como vamos a usar el método de consola, usando el comando convmv, pulsamos en el menú Ver > Paneles > Terminal.
Observamos como en la parte inferior de dolphin se abre una consola de terminal, ya situada en la carpeta en la cual nos encontramos
Ahora hemos introducido el comando: conmv -r -f cp1252 -t utf-8 * --notest
Aqui he marcado en verde el comando introducido para que sea mas legible
Al pulsar intro, observamos el resultado del comando, observamos como en la columna de la izquierda esta el nombre con el error de codificación, y en la columna de la drecha se encuentra el error ya corregido.
7 comentarios:
Fíjate que casualidad que yo he escrito un artículo para evitar el problema:
http://malagaoriginal.blogspot.com.es/2013/12/la-forma-correcta-de-poner-un-nombre-un.html
@Malagueños Originales y Libres
Ese problema viene con la aparición de Windows y su famoso teclado Windows (valga la redundancia) el cual, se paso por el arco de triunfo todos los estándares de la época en cuanto a mecanografía se refiere. Ese hecho tuvo consecuencias nefastas para todas las plataformas de hardware y software de la época ya que cambio la disposición de ciertos caracteres especiales en el teclado por eso se llama teclado Windows, porque es ideado por ellos y no es el estándar. Debido a ese cambio se modifico la hasta la fecha inquebrantable tabla de código ASCII, lo que provocó que algunos caracteres especiales tuvieran un código diferente al estándar. Resultado, corrupción en el nombre cuando lo intentas leer en una plataforma no Windows.
La prueba la tienes fácil de comprobar, si ves un ordenador MSX, Atari ST, Amiga podrás comprobar que la disposición del teclado no es exactamente igual, los caracteres especiales están cambiados. Es más si tienes la oportunidad de ver una máquina de escribir (una de las famosas Olivetti Lettera de la época por ejemplo, seguro conocerás a alguien que conserve alguna) también podrás verlo.
Es una manera muy sucia de iniciar un monopolio así que yo no tengo porque corregir mis nombres de archivos si los envió con un sistema diferente, que lo arreglen ellos si quieren o que vuelvan al estándar internacional.
Por cierto lo de usar 8.3 me parece muy fuerte. Sobre todo porque esa porquería había sistemas que no lo usaban ni lo necesitaban. Sin ir mas lejos, el Amiga OS (incluso el de esa época) identificaba los ficheros por su cabecera no por su extensión. La extensión se la ponía el usuario pero mas que nada por comodidad a la hora de identificarlo no porque el sistema no supiera que tipo de archivo estaba abriendo. Compruébalo con algún emulador si quieres.
En resumen, si yo uso un sistema operativo (el que sea) que respeta todos los estándares internacionales yo NO tengo porque modificar nada para que ellos lo vean bien que lo arreglen en Microsoft, si quieren. Es SU problema por saltarse el estándar establecido.
No los modificaba antes cuando era usuario de Amiga y mucho menos ahora que uso Linux.
Hola Marcos.
Esta entrada esta realizada debido a los ficheros que recibimos de los usuarios de windows. Ya que como bien sabes microsoft siempre se ha pasado por el arco del triunfo todos los estándares.
Si necesitamos leer por ejemplo un documento y esta mal codificado lo tendremos que arreglar si o si para poder ver la información.
Esta entrada esta pensada para nosotros y no para ellos. Para poder usar los archivos que recibimos de usuarios de windows con su propia codificación.
Saludos
Hola de nuevo.
Efectivamente he comprendido el objeto de tu entrada ya que viene explicado de una manera cristalina que no deja lugar a dudas de ahí que no hiciese referencia a ella.
Escribí todo eso en respuesta al primer comentario. El propone unos consejos que básicamente son para que los usuarios de Windows no tengan problemas con nuestros archivos. Eso no es aceptable cuando son ellos los que no respetan el estándar establecido. Si ellos tienen problemas que hagan como nosotros. De igual modo que nosotros tenemos que arreglar su desaguisado como bien explicas en tu entrada, nosotros no tenemos que adaptar nuestros ficheros para que ellos no tengan problemas como proponen en el primer comentario.
A fin de cuentas fue Microsoft quien se salto la tabla ASCII y la disposición del teclado cuando el resto de la humanidad usaba esos estándares.
Como bien indicas en tu comentario de momento nosotros tendremos que corregir lo que nos venga de Windows para no tener ningún problema. Al menos hasta que Microsoft vuelva al formato estándar que lo dudo. Ahora bien, al igual que nosotros tenemos que buscarnos la vida pues ellos que se la busquen también no como proponen en el primer comentario.
Un saludo y felices fiestas :)
¿Y hay alguna forma de hacerlo en ficheros comprimidos? Quiero decir ficheros comprimidos con archivos dentro que tienen caracteres invalidos.
Con Debian no me deja descomprimir archivos con caracteres invalidos
Pues gracias por la solucion, me ha venido tarde, pero para la proxima ya se que hacer
Genio total! Gracias, solucionaste mi problema. Comento y actualizo al 10/06/2016.
El procedimiento tambien funciona en Arch Linux KDE. La forma de instalar 'convmv' es: yaourt -S convmv.
Despues lo usan tal cual esta comentado.
Publicar un comentario