Convertir a UTF-8
Un archivo que muestra "Café del Mar" en lugar de "Café del Mar" no perdió sus datos, simplemente se decodificó con la suposición equivocada, y volver a codificarlo a ciegas casi siempre empeora las cosas. Este endpoint detecta el encoding real de origen de un archivo de texto y lo convierte de forma limpia a UTF-8, deshaciendo el daño en lugar de sumarle uno nuevo.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
De dónde vienen los caracteres rotos
Los archivos de texto no traen una etiqueta que diga en qué encoding se guardaron; un programa tiene que adivinarlo, y durante décadas distintos sistemas adivinaron de forma distinta por defecto según el sistema operativo, la región y la época en que se creó el archivo. Un archivo en Latin-1 abierto como UTF-8, o al revés, no produce un error, simplemente genera caracteres deformados en silencio donde haya una letra acentuada, una comilla tipográfica o un carácter no latino, porque cada encoding asigna los mismos bytes a símbolos distintos.
Qué hace realmente la conversión
La api convertir a utf-8 examina los patrones de bytes del archivo para identificar el encoding de origen más probable, ya sea Latin-1, Windows-1252, alguno de la familia Shift-JIS o GBK usada históricamente para texto en japonés y chino, o alguno de los pocos más que aún circulan en sistemas antiguos, y luego vuelve a decodificar y codificar el contenido correctamente en UTF-8. Cuando un archivo ya está dañado por una conversión anterior mal hecha, muchas veces puede reconstruir los caracteres originales, porque el propio patrón de corrupción es una huella de lo que salió mal.
Cómo funciona la solicitud y el precio
Envía el archivo con un POST a /data/to-utf8 y la llamada devuelve un task_id de inmediato, porque la detección de encoding se beneficia de examinar bien el archivo en lugar de apurar una suposición. El resultado convertido, en UTF-8 válido, llega a su webhook firmado o mediante un enlace firmado válido por 24 horas al terminar el proceso. El precio es fijo, $0.002 por solicitud, y un trabajo que falla tras tres reintentos nunca se cobra.
Por qué UTF-8 es la respuesta y no solo una opción
UTF-8 se volvió el encoding dominante en la web justamente porque puede representar cada carácter del estándar Unicode y a la vez mantiene compatibilidad hacia atrás con el texto ASCII plano, y por eso los navegadores, bases de datos y APIs modernas lo usan por defecto y cada vez toleran menos cualquier otra cosa. Convertir archivos antiguos a UTF-8 no es una preferencia de estilo, es lo que hace que el contenido sea portable a cualquier sistema que lo vaya a tocar después.
Dónde encaja en la automatización
Los problemas de encoding suelen aparecer en el peor momento posible, en lo profundo de un flujo que asumía una entrada limpia, así que este endpoint pertenece justo a la ingesta: apenas llega un archivo desde una subida, una importación por FTP o un archivo antiguo que se está migrando, y antes de que algo lea o muestre su contenido. El acceso requiere saldo prepago, lo que mantiene las peticiones rápidas y el servicio sin abuso. Este endpoint está activo ahora.
Qué puede hacer con ella
Rescatar una exportación antigua
Un equipo de datos convierte un CSV exportado hace diez años que muestra tildes rotas, devolviéndolo a UTF-8 limpio antes de cargarlo en un pipeline de analítica moderno.
Ingesta de contenido de múltiples fuentes
Una plataforma editorial convierte artículos enviados por autores que usan distintos editores de texto regionales, para que cada archivo llegue al CMS con un encoding correcto y consistente.
Corregir una conversión previa fallida
Un equipo de soporte convierte un archivo que ya quedó dañado por una suposición de encoding incorrecta anterior, recuperando los caracteres acentuados y especiales originales en lugar de dejarlos rotos.
Migración de un sistema heredado
Un equipo de TI convierte miles de archivos de texto heredados de un sistema Windows-1252 que se está retirando, pasándolos a UTF-8 antes de archivarlos en un nuevo repositorio.
Preguntas frecuentes
¿Cómo convierto un archivo a UTF-8 con una API?
Envíe un POST con el archivo a /data/to-utf8. La api convertir a utf-8 devuelve un task_id de inmediato y entrega el archivo correctamente codificado en UTF-8 a su webhook o a un enlace firmado al terminar el proceso.
¿Esta API es gratis?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Qué son los caracteres rotos y esta API los arregla?
Los caracteres rotos, o mojibake, aparecen cuando un archivo se decodifica con el encoding equivocado; este endpoint detecta el encoding original probable y vuelve a convertir el archivo, recuperando muchas veces los caracteres previstos.
¿Qué encodings de origen puede detectar?
Maneja encodings heredados comunes como Latin-1, Windows-1252 y encodings usados en Asia oriental como Shift-JIS y GBK, además de archivos que ya están correctamente en UTF-8.
¿Funciona con archivos de cualquier tamaño?
Como el procesamiento es asíncrono, el endpoint está hecho para manejar archivos reales sin bloquear su hilo de petición mientras corren la detección y la conversión.
¿Puedo convertir muchos archivos en lote?
Sí, cada archivo se envía como su propia solicitud y se procesa de forma independiente, así que un lote de archivos puede convertirse en paralelo con cada resultado entregado por webhook a medida que termina.
¿La API Convertir a UTF-8 ya está activa?
Sí, este endpoint está activo hoy al precio publicado de $0.002 por solicitud.
¿Qué pasa con mi archivo después de la conversión?
El archivo enviado y el resultado convertido se eliminan tras la ventana de retención y jamás se usan para entrenar nada. La entrega es por webhook firmado o por un enlace firmado válido por 24 horas.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/to-utf8 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/to-utf8", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/to-utf8",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/to-utf8", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/to-utf8", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.to_utf8",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |