Saltar al contenido

Pruebas de codificación

Archivos CSV de prueba gratis en UTF-8 sin BOM, UTF-8 con BOM, Shift_JIS y CP932, con datos japoneses, para probar mojibake e importacion CSV.

Un archivo CSV de prueba codificado en UTF-8 sin BOM

utf8.csv / 659 B

Un archivo CSV de prueba codificado en UTF-8 con BOM

utf8-bom.csv / 662 B

Un archivo CSV de prueba codificado en Shift_JIS

sjis.csv / 514 B

Un archivo CSV de prueba codificado en CP932, con caracteres específicos de fabricante

cp932.csv / 518 B

Importancia de las pruebas de codificación

Los CSV con texto no ASCII suelen sufrir mojibake por discrepancias de codificación. Excel prefiere UTF-8 con BOM y el soporte varía según la herramienta.

Usa estos archivos para verificar que tus importadores CSV y librerías de texto manejen cada codificación correctamente.

Características de codificaciones comunes

📖 Dónde se suele tropezar

El mismo contenido escrito en UTF-8 con y sin BOM, Shift_JIS, CP932 y mas, de modo que un solo conjunto te dice cuales maneja bien tu lector. Ojo: que no se haya visto mal no significa que se haya detectado. Acertar por casualidad ocurre.

Caso Qué ocurre Qué hacer
Al abrirlo en Excel el texto se ve mal Excel lee un CSV UTF-8 sin BOM con la codificacion del sistema, CP932 en Windows japones. El archivo esta bien; lo que falla es la lectura. Escribe los CSV destinados a Excel en UTF-8 con BOM (EF BB BF). Prueba las dos variantes de esta lista y mira cual se estropea.
Creias que era Shift_JIS y era CP932 CP932 es la extension de Microsoft de Shift_JIS con caracteres de fabricante como , y . Un decodificador estricto de Shift_JIS lanza una excepcion al encontrarlos. Da por hecho que los CSV de Windows en japones son CP932 en la practica y nombra ese codec explicitamente: SJIS-win en PHP, cp932 en Python.
La deteccion automatica fallo en una linea corta mb_detect_encoding y chardet son conjeturas estadisticas. En una linea de unas decenas de bytes, o puramente ASCII, no hay nada con lo que decidir. Cuando puedas, deja elegir al usuario en vez de adivinar. Para texto ya estropeado, listar candidatos en el corrector de mojibake y escoger uno es mas seguro.

Un texto solo leido con la codificacion equivocada se recupera; uno vuelto a guardar asi, no. En cuanto los caracteres pasan a ser U+FFFD o ?, los bytes originales se han perdido. Guardar los datos en bruto antes de convertir es lo que hace recuperable una importacion.