bigpresh/Dancer-Plugin-Database

Oracle NLS parameters

K-C-E opened this issue · 1 comments

Need some help.
I have an Oracle database, and to retrieve the data I need to set an environment variable NLS_LANG.
Usually I do it like this:
$ENV{NLS_LANG} ="AMERICAN_AMERICA.CL8MSWIN1251";
If I run the Dancer2 application with Dancer-Plugin-Database
in standalone mode - it works. When I run it through plackup or Starman I get the data in a wrong encoding . Where should I register NLS_LANG and possibly other language variables for Oracle?

Thank you.

Sorry for the hugely late reply to this. I'm afraid I have no idea about Oracle, so I don't know what help I can offer here - but I'd think that setting NLS_LANG before executing the app should work, whichever way you execute it.

However, the docs for DBD::Oracle suggest:

For oracle versions >= 9.2 you can specify the client charset and ncharset with the ora_charset and ora_ncharset attributes. You still need to pass ora_envhp = 0 for all but the first connect.

... with the example:

$dbh = DBI->connect ($dsn, $user, $passwd, {ora_charset => 'AL32UTF8'});

So, if you still have this problem (or if not, for the benefit of anyone else who does and finds this issue) I'd recommend putting ora_charset in the dbi_params section of the D::P::D configuration and see if that works for you?