2011-01-20 28 views
6

Un software heredado que estoy reescribiendo en Java usa codificación personalizada (similar a Win-1252) ya que es almacenamiento de datos. Para el nuevo sistema que estoy construyendo, me gustaría reemplazar esto con UTF-8.Cómo convertir un archivo codificado personalizado a UTF-8 (en Java o con una herramienta dedicada)

Necesito convertir esos archivos a UTF-8 para alimentar mi base de datos. Sé el mapa de caracteres utilizado, pero no es uno de los más conocidos. P.ej. "A" está en la posición 0x0041 (como en Win-1252), pero en 0x0042 hay un signo que en UTF-8 aparece en la posición 0x0102, y así sucesivamente. ¿Existe una manera fácil de decodificar y convertir esos archivos con Java?

He leído muchas publicaciones pero todas tratan con codificaciones estándar de la industria de algún tipo, no con las personalizadas. Estoy esperando que sea posible crear un java.nio.ByteBuffer.CharsetDecoder personalizado o java.nio.charset.Charset para pasarlo a java.io.InputStreamReader como se describe en la primera respuesta here?

Cualquier sugerencia bienvenida.

Respuesta

9

sin necesidad de ser complicado. acaba de hacer una matriz de 256 caracteres

static char[] map = { ... 'A', '\u0102', ... } 

entonces

read each byte b in source 
    int index = (0xff) & b; // to make it unsigned 
    char c = map[index]; 
    target.write(c); 
Cuestiones relacionadas