Javascript:
//https://www.npmjs.com/package/utf8
//https://github.com/mathiasbynens/quoted-printable
par_comment_qoted = quotedPrintable.encode(utf8.encode('test ąčęė'));
console.log('par_comment_qoted=' par_comment_qoted);
// outpt: par_comment_qoted="test =C4=85=C4=8D=C4=99=C4=97"
Oracle:
select utl_raw.cast_to_varchar2(utl_encode.quoted_printable_encode(utl_raw.cast_to_raw('test ąčęė'))) from dual;
-- output: test =E0=E8=E6=EB
Why the same operation returns different outputs? Is there any way to make the javascript as well so that it returns the same quoted printable encoding result as Oracle?
CodePudding user response:
You can try using CONVERT
to change the string from the database character set to UTF-8 before generating the quoted printable:
select utl_raw.cast_to_varchar2(
utl_encode.quoted_printable_encode(
utl_raw.cast_to_raw(
CONVERT('test ąčęė', 'UTF8')
)
)
) AS quoted_printable
from dual;
Which outputs:
QUOTED_PRINTABLE test =C4=85=C4=8D=C4=99=C4=97
db<>fiddle here
Is there any way to make the javascript as well so that it returns the same quoted printable encoding result as Oracle?
You would need to work out what the database's character set is and then encode the JavaScript string using that encoding (rather than UTF-8) and generate the printed quotable based on the other character set.