Nueva versión mejorada de FileEncoding Converter (v1.3)

Post original en JASoft.org: http://www.jasoft.org/Blog/post/Nueva-version-mejorada-de-FileEncoding-Converter-(v13).aspx

Ya hace unos años creé una aplicación, pequeña pero muy útil, llamada FileEncoding Converter.

Su objetivo es sencillo: le pasas una carpeta, y opcionalmente una codificación y un filtro de archivos y convierte todos los archivos a la codificación especificada.

Se trata de una aplicación de consola (línea de comandos) que toma los siguientes parámetros:

1.- La ruta base que contiene nuestros archivos a procesar. Acepta rutas relativas a la carpeta actual y rutas absolutas.

2.- El tipo de codificación al que queremos transformarlo (opcional).

Los tipos de codificación soportados son los siguientes:

  • ANSI
  • ASCII
  • Unicode
  • UnicodeBI (Big Indian)
  • UTF32
  • UTF7
  • UTF8.

Este parámetro no distingue entre mayúsculas y minúsculas, por lo que podemos poner cualquiera de estos valores como queramos. Si omitimos este parámetro la codificación que se usará por defecto será ANSI.

3.- El tercer parámetro (opcional) permite especificar una o varias plantillas de nombres de archivo a buscar para procesar. Permite el uso de comodines. Si no le pones nada buscará solamente archivos de texto y HTML (.htm o .html), pero puedes especificar, separados por comas, qué tipos de archivos quieres transformar.

4.- Finalmente el cuatro parámetro es “/f” y sirve para forzar la conversión siempre. Esto es muy útil cuando, por ejemplo, tienes archivos en formato UTF8 sin BOM. Si los conviertes también a UTF8, al detectar que ya están en UTF8 no los codifica. Forzando la conversión los grabará de nuevo como UTF8 pero esta vez poniéndoles el BOM, lo cual puede ser muy útil.

Codificación UTF8 y preámbulos

Este es un dato importante…

Los archivos codificados según alguno de los tipos anteriores generalmente llevan delante una marca de tres bytes llamada preámbulo o BOM (Byte Order Mark). Aunque no es obligatorio sí es muy útil puesto que nos indica de modo inequívoco de qué forma está codificado un archivo. Cuando se usa en un entorno cerrado (donde ya conocemos cuál es la codificación que se usa siempre) no hace falta, pero en el intercambio de archivos debería usarse siempre.

La cuestión es que en Windows casi todos los editores le ponen el BOM a los archivos. Pero en Mac y Linux es al contrario y no se lo suelen poner. Por regla general si no llevan el BOM están codificados en ANSI o en UTF8. Lo malo es que la única forma de saberlo si no llevan el BOM es usando un método heurístico que consiste en tratar de identificar ciertas secuencias de bytes dentro del archivo, que te indicarán la presencia de la codificación con un alto grado de probabilidad.

Esta nueva versión del conversor identifica los archivos UTF8 sin BOM usando este método, por lo que es capaz de trabajar con la mayoría de archivos que te puedas encontrar por ahí. Es importante saberlo.

A raíz de esta nueva capacidad he incluido la opción de forzar la reconversión que mencionaba antes (/f) para forzar la inclusión del BOM en los archivos UTF8 y facilitar su intercambio.

Ejemplos de uso

Lo que hace la utilidad es recorrer la carpeta base especificada y todas sus subcarpetas y transforma todos los archivos indicados a la codificación de destino especificada (por defecto ANSI).

Muestra un progreso de los archivos que va transformando, y al final muestra un resumen de lo que ha hecho.

Así, por ejemplo, para transformar todos los archivos con extensiones .htm, .html y .txt de una carpeta y sus subcarpetas de su codificación actual a Unicode Big Indian escribiríamos:

FileEncodingConverter C:Micarpeta UnicodeBI

o para convertir todos a ANSI valdría con poner simplemente (con todas las opciones por defecto):

FileEncodingConverter C:Micarpeta

Para forzar la conversión (o re-conversión) a UTF8 de todos los archivos XML cuyo nombre contenga las letras ‘ES’, además de todos los de texto así como los HTM (tanto .htm como .html), podrías escribir:

FileEncodingConverter C:MisArchivosDedatos UTF8 *ES*.xml,*.txt,*.htm* /f

Para ver una ayuda rápida sobre su uso basta con poner /? o -?.

Para ejecutarlo necesitarás la versión 2.0 o posterior de .NET.

Puedes descargarlo desde aquí: FileEncodingConverter.zip (5,15KB)

¡Espero que te sea útil!

Sin categoría

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *