2012-09-16 775 views
10

Estoy luchando con el siguiente problema. Usando Javascript me gustaría cambiar el conjunto de caracteres de un contenido de archivo y mostrar este contenido al usuario.Obtener/establecer la codificación de archivos con el FileReader de Javascript

Tengo una entrada: formulario de archivo. En el cambio estoy leyendo el contenido

$('#form input:file').change(function(event){     
    file = this.files[0]; 
    reader = new FileReader(); 
    reader.onload = function(event) { 
     result = event.target.result.replace(/\n/g,'<br />'); 
     $('#filecontents').html(result); 
    }); 
    reader.readAsText(file); 
}) 

El archivo está en Windows-1251. Me gustaría convertir el contenido del archivo a otra codificación y luego presentarlo al usuario.

¿Se puede lograr esto con javascript?

Saludos

Respuesta

21

Si la página HTML está en UTF-8 y el archivo se encuentra en la norma ISO-8859-1.

esto está funcionando:

reader.readAsText(file, 'ISO-8859-1'); 

que no tienen ningún archivo de Windows-1251, así que no era capaz de probarlo pero parece que se apoya el 'CP1251' (por Google Chrome, al menos,), por lo que:

reader.readAsText(file, 'CP1251'); 

Si nada de esto funciona. Entonces debes cambiar el formateo de forma manual. Desafortunadamente, no conozco ninguna biblioteca de JavaScript que haga el truco.

Desde la asociación Unicode here y desde Delan Azabanianswer, debe lograr construir una función que convierte el carbón por la charla de su cadena en CP1251 a UTF-8.

+0

En cuanto a su última frase, ¿no hay una función "estándar" para convertir una cadena ISO-8859-1 a UTF-8? –

+0

Intenté esto con un archivo Shift-JIS de la siguiente manera: reader.readAsText (f, "Shift-JIS"); que se convirtió en UTF-8 muy bien. Pero ahora el problema es cómo detectar que el archivo entrante está codificado en Shift-JIS ... porque si trato de enviar un archivo codificado en UTF-8 a esa función, parece que no se convierte correctamente. – starmandeluxe

Cuestiones relacionadas