Home > Net >  Why quoted printable encoding operation in javascript and in Oracle returns different results?
Why quoted printable encoding operation in javascript and in Oracle returns different results?

Time:07-17

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.

  • Related