Codificador EBCDIC
Pase texto a bytes de mainframe IBM y vuelva: Hello se convierte en c8 85 93 93 96 en la página de códigos 037, y un volcado hexadecimal pegado desde un archivo COBOL o una traza vuelve como texto legible. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- Hello
- Modo de cálculo
- To ebcdic
- Resultado
- c8 85 93 93 96
- Página de códigos
- 037
- Entrada
- Hello
- EBCDIC en hex
- c8 85 93 93 96
Un codificador EBCDIC traduce el texto cotidiano a la página de códigos 037 de mainframe IBM, el juego de caracteres de un byte clásico de EE. UU. y Canadá que sigue apareciendo en copybooks COBOL, volcados VSAM y cargas MQ. Los caracteres fuera de la página 037—emoji, ideogramas CJK y otro Unicode fuera del conjunto Latin-1 que define CP037—figuran en un informe de no mapeados con índice y code point para que pueda corregir el origen en lugar de adivinar. El algoritmo es un ida y vuelta puro por tablas: sin red, sin semillas aleatorias, sin dependencia del reloj.
Cómo se relacionan ASCII y EBCDIC página 037, y por qué importan los no mapeados
ASCII guarda las letras latinas en un bloque contiguo familiar: la A mayúscula es sesenta y cinco en decimal, los dígitos parten del cuarenta y ocho y el espacio es treinta y dos. EBCDIC, pensado para tarjetas perforadas IBM y System/360, reordena esos glifos en otra disposición de bytes. En la página 037, la A mayúscula pasa a hexadecimal C1, el dígito cero a F0 y el espacio a 40.
Ese reordenamiento no es una curiosidad opcional: si trata un fichero EBCDIC como UTF-8 o ISO-8859-1, obtiene mojibake y longitudes de campo rotas. Esta herramienta implementa el mapeo bidireccional de IBM CCSID 037: cada byte de cero a doscientos cincuenta y cinco se corresponde con un escalar Unicode Latin-1, y cada escalar Latin-1 vuelve a exactamente un byte EBCDIC. La codificación recorre cada code point Unicode de su cadena; si está entre cero y doscientos cincuenta y cinco inclusive, se añade el byte EBCDIC correspondiente como dos dígitos hex.
La decodificación acepta pares hex separados por espacios o una cadena hex continua de longitud par, convierte cada par en un byte y lo expande por la tabla inversa a texto. Esta página cubre búsquedas de codificador EBCDIC, convertidor ASCII a EBCDIC, página de códigos 037 y codificación de caracteres de mainframe IBM—no decimal empaquetado, no página 500 ni volcados de bytes UTF-8.
Consejos prácticos, comprobaciones de migración y herramientas relacionadas
Las comprobaciones de ida y vuelta son la prueba de humo más rápida: codifique Hello, confirme que el primer byte es C8 para H y que el espacio sería 40, luego decodifique el hex y confirme que recupera la cadena original. Mantenga las cargas bajo el límite de caracteres publicado; los conjuntos binarios de varios megabytes pertenecen fuera de línea con iconv o utilidades de dataset.
Esta herramienta no es un convertidor general de la familia EBCDIC: las páginas 500, 1047 y 1140 difieren en símbolos de moneda y euro, así que no asuma que el hex es portable entre esos CCSID. Prefiera esta capacidad cuando la intención de búsqueda sea texto ASCII o latino frente a hex de página IBM 037; use un codificador de bytes UTF-8 cuando necesite secuencias multibyte modernas, y herramientas Base64 cuando el objetivo sea enmarcado de transporte y no traducción de juego de caracteres.
Al enseñar, muestre la misma letra como ASCII decimal, como hex CP037 y como la interpretación errónea bajo ISO-8859-1 para que los estudiantes vean por qué las integraciones de mainframe siguen necesitando un paso EBCDIC explícito.
Qué puede hacer con ella
Docencia y triaje de soporte
Estudiantes e ingenieros L2 decodifican volcados hex de rastros CICS a texto legible y comparan hojas hechas a mano con la tabla determinista.
Preguntas frecuentes
¿Qué es la página de códigos IBM EBCDIC 037?
La página 037 (CCSID 037) es el juego EBCDIC de un byte clásico de EE. UU. /Canadá en mainframes IBM. Mapea los 256 bytes a escalares Unicode Latin-1 y reordena letras y dígitos respecto a ASCII.
¿Admite letras latinas acentuadas?
Sí, para caracteres del rango Latin-1 que define CP037 (por ejemplo muchos acentos de Europa occidental). Los caracteres fuera de ese conjunto se informan como no mapeados al codificar.
¿Es gratuito el codificador EBCDIC?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Por qué un archivo EBCDIC se ve ilegible al abrirlo como ASCII?
Porque EBCDIC coloca las letras en valores de byte distintos. En la página de códigos 037 la A mayúscula es C1 y el espacio es 40, mientras que ASCII usa 65 y 32, así que leerlo del modo equivocado cambia cada carácter y descuadra las longitudes de los registros.
¿Cómo descodifico un volcado hexadecimal EBCDIC?
Elija el sentido de vuelta a texto y pegue los bytes en hexadecimal, en pares separados por espacios, comas, puntos y comas o barras verticales, o como una cadena continua de longitud par. Una longitud impar o un par inválido se le señalan en lugar de rellenarse.
Herramientas relacionadas
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, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/enc/ebcdic \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/ebcdic", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/ebcdic",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/ebcdic", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/ebcdic", 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
{
"text": "Hello"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.ebcdic",
"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_chars | 100000 |
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. |
Notas técnicas
Pegue texto plano y elija to_ebcdic para obtener bytes EBCDIC hexadecimales separados por espacios, o pegue hex y elija to_ascii para recuperar caracteres legibles. Estudiantes, ingenieros de migración y equipos de soporte obtienen el mismo JSON determinista desde el ejecutor gratuito del navegador y la API prepago.
Cómo se relacionan ASCII y EBCDIC página 037, y por qué importan los no mapeados
Si es mayor, el carácter se omite del flujo de bytes y se registra en unmapped con su índice en la cadena y code_point para que los operadores puedan eliminar o transliterar de forma deliberada. Tokens hex inválidos o una longitud continua impar provocan invalid_input en lugar de inventar relleno.
Cómo llamar a la API y qué contiene la respuesta
Envíe un cuerpo JSON con el campo de cadena obligatorio text (alias input, value y data) y un mode opcional to_ebcdic o to_ascii. El modo por defecto es to_ebcdic: cada carácter mapeable se convierte en un byte EBCDIC CP037 en hex en minúsculas, unido con espacios en result y ebcdic_hex. El modo to_ascii trata text como hex EBCDIC—pares separados por espacios, comas, puntos y coma, barras verticales, o una cadena continua de cero a nueve y A a F de longitud par—y devuelve la cadena recuperada en result y text. La longitud de entrada está limitada a cien mil caracteres para que una sola petición no agote la memoria del Worker. En éxito ambos modos incluyen mode, code_page con la cadena 037, input, result, bytes como enteros de cero a doscientos cincuenta y cinco, byte_count, char_count, mapped_count, unmapped_count, unmapped como array de objetos con index, char y code_point, más un mensaje breve en inglés. La codificación también expone ebcdic_hex igual a result; la decodificación normaliza ebcdic_hex a pares separados por espacios aunque haya pegado hex continuo. La validación fallida—text ausente, text no cadena, entrada demasiado grande, mode desconocido, hex vacío, hex continuo de longitud impar o un token que no sean exactamente dos dígitos hexadecimales—devuelve invalid_input y nunca se cobra. El precio es un fijo $0.002 por petición correcta con unidad item.
Consejos prácticos, comprobaciones de migración y herramientas relacionadas
Prefiera to_ascii cuando ya haya copiado hex de un volcado, un rastro CICS o un editor hex y quiera recuperar los glifos. Incluya a propósito un emoji o un carácter CJK junto a ASCII plano para afirmar que unmapped_count sube y que el flujo EBCDIC solo contiene el subconjunto mapeable—los scripts de migración deben fallar en cerrado cuando unmapped_count sea distinto de cero si el sistema destino no puede almacenar esos caracteres. Las tareas fallidas con invalid_input no consumen saldo prepago, lo que mantiene baratos los scripts exploratorios cuando los alumnos pegan grupos hex incompletos.
Casos de integración
Fixtures de ficheros mainframe y cargas MQ
Construya cadenas hex EBCDIC CP037 para pruebas de integración que simulen registros VSAM, campos COBOL PIC X o mensajes MQ sin un equipo z/OS.
Migración y control de calidad de datos
Codifique nombres de clientes y flags antes de la carga; rechace lotes cuando unmapped_count sea mayor que cero para que los emoji no lleguen a columnas solo EBCDIC.
Preguntas técnicas
¿Cómo informa el codificador EBCDIC de los caracteres no mapeados?
En modo to_ebcdic, todo code point Unicode por encima de 255 se omite en la salida hex y se lista en unmapped con index, un char de visualización y code_point. mapped_count y unmapped_count resumen la ejecución.
¿Qué formato espera to_ascii?
Bytes EBCDIC hexadecimales: pares separados por espacios como c8 85 o hex continuo de longitud par como c885. Hex inválido o incompleto devuelve invalid_input.