Thread: Client encoding win866.

Client encoding win866.

From
Попов Михаил Юрьевич
Date:

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.

Re: Client encoding win866.

From
Hiroshi Inoue
Date:
(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.



Re: Client encoding win866.

From
Попов Михаил Юрьевич
Date:
>> 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.

Re: Client encoding win866.

From
Hiroshi Inoue
Date:
(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



Re: Client encoding win866.

From
Hiroshi Inoue
Date:
(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

Re: Client encoding win866.

From
Попов Михаил Юрьевич
Date:

>> 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? 

Re: Client encoding win866.

From
Hiroshi Inoue
Date:
(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