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.
utf8.csv / 659 B
utf8-bom.csv / 662 B
sjis.csv / 514 B
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
- UTF-8: La más común; predeterminada en la mayoría de lenguajes.
- UTF-8 BOM: Recomendado para abrir CSV en Excel. Antepone tres bytes (EF BB BF).
- Shift_JIS: Muy usado en Windows; algunos caracteres causan problemas.
- CP932: Shift_JIS extendido; admite caracteres dependientes del sistema.
📖 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.