Convertir Windows-1252 a UTF-8 conservando los saltos de línea

Un ejemplo byte a byte para conservar acentos, el euro y CRLF al convertir un archivo local a UTF-8.

Empieza por los bytes originales

El inspector de codificación y convertidor UTF-8 lee el archivo antes de que otro programa interprete sus bytes. Elige la exportación original en vez de copiar texto ya dañado desde un editor. Que los bytes sean UTF-8 válidos no demuestra que esa fuera la codificación prevista.

Un ejemplo reproducible

Pulsa Cargar ejemplo Windows-1252. El archivo ficticio contiene exactamente ocho bytes: 43 61 66 E9 20 80 0D 0A. Se selecciona Windows-1252 explícitamente. El texto Unicode esperado es Café €\r\n: el final representa un CR real seguido de LF, no cuatro caracteres literales.

Sus puntos de código son U+0043 U+0061 U+0066 U+00E9 U+0020 U+20AC U+000D U+000A. Los bytes originales no son UTF-8 estricto: E9 no va seguido de los bytes de continuación necesarios. Esto invita a consultar la codificación de origen; no demuestra que cualquier archivo así sea Windows-1252.

  1. Mantén Windows-1252 y pulsa Vista previa de la conversión.
  2. Comprueba Café € y revisa que los detalles indiquen un CRLF y un salto final.
  3. Deja desmarcado el BOM de salida, salvo que la aplicación receptora lo pida expresamente.
  4. Descarga el resultado. Sus once bytes exactos son 43 61 66 C3 A9 20 E2 82 AC 0D 0A.
  5. Si marcas BOM, previsualiza otra vez: la salida tiene catorce bytes, con EF BB BF antes de esos once.

«ANSI» no identifica una codificación concreta

La etiqueta «ANSI» de una aplicación es ambigua. Windows-1252 convierte 80 en el euro; ISO-8859-1 lo asigna a U+0080, un control C1 que esta herramienta rechaza. Los bytes 81, 8D, 8F, 90 y 9D no están definidos en su correspondencia estricta Windows-1252 y detienen la conversión. Pregunta al productor del archivo por la codificación real en vez de escoger solo porque una vista previa parezca legible.

BOM, UTF-16 y finales incompletos

FF FE 41 00 0D 00 0A 00 es un ejemplo UTF-16LE con BOM. Se convierte en 41 0D 0A en UTF-8 sin BOM: A seguido de CRLF. Sin BOM hay que elegir UTF-16 explícitamente. Un byte final suelto o un sustituto sin pareja detiene la conversión, incluso fuera de la vista previa. Se reconoce el BOM UTF-32, pero el formato no se admite.

Qué se conserva y qué no se puede recuperar

Se conservan espacios, tabulaciones, saltos CRLF/LF/CR mezclados, la presencia o ausencia de salto final y los caracteres Unicode compuestos o combinados. Solo se elimina el BOM inicial de origen; tú eliges el BOM de salida. Un U+FFFD ya presente se conserva. Convertir «Café» ya dañado no recupera los bytes originales.

El límite es 5 MiB (5 242 880 bytes). La vista previa muestra hasta 16 000 unidades de código UTF-16, pero se valida y exporta todo el archivo. Se rechazan firmas binarias conocidas y controles NUL/C0/C1 salvo tabulación, CR y LF. Esta precaución puede rechazar texto legítimo poco habitual. Se descarga texto sin formato .utf8.txt sin sobrescribir el original.

Para un CSV, convierte primero la codificación y luego usa CSV a JSON para cambiar la estructura. El inspector no analiza el CSV ni cambia separadores. Trabaja en memoria, sin peticiones de red ni almacenamiento de la herramienta; el sitio sigue cargando sus recursos. Vuelve al inspector de codificación para probar el ejemplo.