Thread: Client encoding win866.
Hi.
Can you please tell me how to change client encoding in ODBC?
I tried after a connection to execute SQLExecDirect (stmthp, "set client_encoding to \" WIN866 \ ";", SQL_NTS) , but the encoding is still a win1251.
PS: The database I have with encoding win866. Windows 7. PostgreSQL 9.0.4. psqlodbc-09.00.0200.
Mihail Popov.
(2011/06/07 20:04), Попов Михаил Юрьевич wrote: > Hi. > > Can you please tell me how to change client encoding in ODBC? > > I tried after a connection to execute SQLExecDirect (stmthp, "set > client_encoding to \" WIN866 \ ";", SQL_NTS) , but the encoding is still > a win1251. How do you confirm the client_encoding? regards, Hiroshi Inoue > PS: The database I have with encoding win866. Windows 7. PostgreSQL > 9.0.4. psqlodbc-09.00.0200. > > Mihail Popov.
>> Hi. >> >> Can you please tell me how to change client encoding in ODBC? >> >> I tried after a connection to execute SQLExecDirect (stmthp, "set >> client_encoding to \" WIN866 \ ";", SQL_NTS) , but the encoding is still >> a win1251. > How do you confirm the client_encoding? Few details... I create connection and before all the bindings of parameters and columns, and before SQLPrepare I do SQLExecDirect(stmthp,"setclient_encoding to \"WIN866\";",SQL_NTS); Then after SQLPrepare, SQLBindParameter and after SQLExecute I get an error: Error code 22P05 with message ERROR: character 0x83 of encoding "WIN1251" has no equivalent in "MULE_INTERNAL"; In this example, the function I pass the 'select * from "Table"' regards, Mihail Popov.
(2011/06/08 20:52), Попов Михаил Юрьевич wrote: > >>> Hi. >>> >>> Can you please tell me how to change client encoding in ODBC? >>> >>> I tried after a connection to execute SQLExecDirect (stmthp, "set >>> client_encoding to \" WIN866 \ ";", SQL_NTS) , but the encoding is still >>> a win1251. > >> How do you confirm the client_encoding? > > Few details... > I create connection and before all the bindings of parameters and columns, and before SQLPrepare I do SQLExecDirect(stmthp,"setclient_encoding to \"WIN866\";",SQL_NTS); > Then after SQLPrepare, SQLBindParameter and after SQLExecute I get an error: > Error code 22P05 with message ERROR: character 0x83 of encoding "WIN1251" has no equivalent in "MULE_INTERNAL"; > > In this example, the function I pass the 'select * from "Table"' What will happen when you don't call *set client_encoding to ...*? regards, Hiroshi Inoue
(2011/06/08 20:52), Попов Михаил Юрьевич wrote: > >>> Hi. >>> >>> Can you please tell me how to change client encoding in ODBC? >>> >>> I tried after a connection to execute SQLExecDirect (stmthp, "set >>> client_encoding to \" WIN866 \ ";", SQL_NTS) , but the encoding is still >>> a win1251. > >> How do you confirm the client_encoding? > > Few details... > I create connection and before all the bindings of parameters and columns, and before SQLPrepare I do SQLExecDirect(stmthp,"setclient_encoding to \"WIN866\";",SQL_NTS); > Then after SQLPrepare, SQLBindParameter and after SQLExecute I get an error: > Error code 22P05 with message ERROR: character 0x83 of encoding "WIN1251" has no equivalent in "MULE_INTERNAL"; Please confirm the database encoding. Isn't it "WIN1251" not "WIN866"? regards, Hiroshi Inoue
>> Few details... >> I create connection and before all the bindings of parameters and columns, and before SQLPrepare I do SQLExecDirect(stmthp,"setclient_encoding to \"WIN866\";",SQL_NTS); >> Then after SQLPrepare, SQLBindParameter and after SQLExecute I get an error: >> Error code 22P05 with message ERROR: character 0x83 of encoding "WIN1251" has no equivalent in "MULE_INTERNAL"; >> >> In this example, the function I pass the 'select * from "Table"' >What will happen when you don't call *set client_encoding to ...*? Yes, I understood and found a bug in my code. And now schema by using "set client_encoding to \"WIN866\";" worked correctly.Thanks. But while I was searching for a solution, I found the documentation and tried it through a variable PGCLIENTENCODING changethe encoding. http://www.postgresql.org/docs/8.1/static/multibyte.html --- Using PGCLIENTENCODING. If the environment variable PGCLIENTENCODING is defined in the client's environment, that clientencoding is automatically selected when a connection to the server is made. (This can subsequently be overridden usingany of the other methods mentioned above.) Using the configuration variable client_encoding. If the client_encoding variable is set, that client encoding is automaticallyselected when a connection to the server is made. (This can subsequently be overridden using any of the othermethods mentioned above.) --- I set environment variable at 'WIN866', as well set the database properties "ALTER DATABASE "DD866" SET client_encoding='WIN866'".But it did not work. And without *set client_encoding to ...* don't work. This mechanism would be more optimal for my project, because now, for each cursor must run the command *set client_encodingto ...*. Or is this another question?
(2011/06/09 18:34), Попов Михаил Юрьевич wrote: > > >>> Few details... >>> I create connection and before all the bindings of parameters and columns, and before SQLPrepare I do SQLExecDirect(stmthp,"setclient_encoding to \"WIN866\";",SQL_NTS); >>> Then after SQLPrepare, SQLBindParameter and after SQLExecute I get an error: >>> Error code 22P05 with message ERROR: character 0x83 of encoding "WIN1251" has no equivalent in "MULE_INTERNAL"; >>> >>> In this example, the function I pass the 'select * from "Table"' > >> What will happen when you don't call *set client_encoding to ...*? > > Yes, I understood and found a bug in my code. And now schema by using "set client_encoding to \"WIN866\";" worked correctly.Thanks. > > But while I was searching for a solution, I found the documentation and tried it through a variable PGCLIENTENCODING changethe encoding. > http://www.postgresql.org/docs/8.1/static/multibyte.html > --- > Using PGCLIENTENCODING. If the environment variable PGCLIENTENCODING is defined in the client's environment, that clientencoding is automatically selected when a connection to the server is made. (This can subsequently be overridden usingany of the other methods mentioned above.) > > Using the configuration variable client_encoding. If the client_encoding variable is set, that client encoding is automaticallyselected when a connection to the server is made. (This can subsequently be overridden using any of the othermethods mentioned above.) > --- > I set environment variable at 'WIN866', as well set the database properties "ALTER DATABASE "DD866" SET client_encoding='WIN866'".But it did not work. And without *set client_encoding to ...* don't work. > This mechanism would be more optimal for my project, because now, for each cursor must run the command *set client_encodingto ...*. Or is this another question? If you connect via DSN, please look at the page http://www.ne.jp/asahi/inocchichichi/entrance/psqlodbc/index.html . regards, Hiroshi Inoue