Codifico una cadena 'pruébame ąčęėįš' en javascript como esta:
function toBinary(string) { const codeUnits = new Uint16Array(string.length); for (let i = 0; i < codeUnits.length; i++) { codeUnits[i] = string.charCodeAt(i); } return String.fromCharCode(...new Uint8Array(codeUnits.buffer)); } console.log(btoa(toBinary('test me ąčęėįš'))); // output: dABlAHMAdAAgAG0AZQAgAAUBDQEZARcBLwFhAQ==Si codifico la misma cadena, la codificación Oracle base64 genera una salida diferente:
select utl_encode.BASE64_ENCODE(utl_raw.cast_to_raw('test me ąčęėįš')) from dual; -- output 6447567A644342745A534467364F62723466413D¿Porqué es eso? ¿La codificación/descodificación BASE64 funciona de manera diferente en Oracle y javascript? Por supuesto, cuando intento en Oracle decodificar una cadena codificada en javascript, no funciona:
select utl_encode.base64_decode('dABlAHMAdAAgAG0AZQAgAAUBDQEZARcBLwFhAQ==') from dual; -- output: ORA-01465: invalid hex number¿Cómo en Oracle decodificar en javascript base64 cadena codificada?