问题
I'm using https://github.com/brianc/node-postgres pg
module. Apparently I can't consume a Unicode password to connect to the db. From the same location psql
with connection parameters goes OK. With Node.js, it gives ne password authentication failed for user
. When I check with console.log()
I see exactly what I expect. If I change a password to ASCII both in the db and the connection string, everything works well. But I need the old Unicode password to be consumed...
I tried both https://github.com/brianc/node-postgres/wiki/Client
new pg.Client({...password: Código
and
conString = "postgres://...Código@"
I know that both ODBC (Driver={PostgreSQL UNICODE};
) and JDBC (;Unicode=true
) support UTF in connection string. I find nothing on Node.js pg
module UTF support.
Please help.
I saw http://www.connectionstrings.com/postgresql/ and read the documentation on https://github.com/brianc/node-postgres. Please help with the question.
Thank you!
回答1:
Found a bug in /lib/client.js
: crypto.createHash('md5').update('утфUTF').digest('hex')
gives:
a77b17c858d93bf7455211a629df45f8
while the right md5 would be:
a=#select md5('утфutf');
md5
----------------------------------
6dbfa2a80226f7629e537268b0650898
(1 row)
So crypto.createHash('md5').update('утфutf', 'utf-8').digest('hex')
gives
6dbfa2a80226f7629e537268b0650898
Following that
The default encoding used by the crypto module is usually 'binary' from another answer
Fixed my utf password problem. So I created PR - maybe soon it won't be a question anymore.
https://github.com/brianc/node-postgres/pull/1178
来源:https://stackoverflow.com/questions/33935749/node-postgres-utf-password-bug