Обсуждение: Posgresql to MSsql encoding problem

Поиск
Список
Период
Сортировка

Posgresql to MSsql encoding problem

От
Pedro Doria Meunier
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi All,

I have this PHP script that simply dumps (inserts) data from a
Postgresql server to a customer's M$SQL server.

The database in the PGSQL server is UTF-8 encoded where the M$SQL
database uses LATIN1.

Accents, as expected, turn to gibberish... :(

I cannot simply use "Set Client Encoding to LATIN1" as the "client"
itself is the script ... :)

Is there a simple way to circumvent this?

Already thankful for any info,
Best regards,
Pedro Doria Meunier

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAkrPEukACgkQ2FH5GXCfxAv9LwCeIsLcr7wwcBTzvXqM/ufYysUK
yQ8AniNYuAjQAEktUt7OCS7lZl4kz92f
=qBrj
-----END PGP SIGNATURE-----


Re: Posgresql to MSsql encoding problem

От
Merlin Moncure
Дата:
On Fri, Oct 9, 2009 at 6:39 AM, Pedro Doria Meunier
<pdoria@netmadeira.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi All,
>
> I have this PHP script that simply dumps (inserts) data from a
> Postgresql server to a customer's M$SQL server.
>
> The database in the PGSQL server is UTF-8 encoded where the M$SQL
> database uses LATIN1.

why can't you set the client encoding?  php should be able to handle
latin1 and send it to mssql right?  if you can't do it automatically
there is always iconv.

merlin

Re: Posgresql to MSsql encoding problem

От
Sam Mason
Дата:
On Fri, Oct 09, 2009 at 11:39:47AM +0100, Pedro Doria Meunier wrote:
> I cannot simply use "Set Client Encoding to LATIN1" as the "client"
> itself is the script ... :)

What does this mean? surely if it's just a "script" you can put another
line at the beginning of the script that says this?

If you really can't do this, how about using ALTER USER to change the
the user that they use latin1 by default?

--
  Sam  http://samason.me.uk/

Re: Posgresql to MSsql encoding problem

От
Pedro Doria Meunier
Дата:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Sam,
Thanks for your answer! :)

The matter of fact is that the script itself is the connected client
where the postgresql server is concerned.

It then connects to another server (the M$SQL one) and, on a row
basis, inserts data coming from the aforementioned connection...

So, to all effects, the script is *the* client... :)

Best regards,
Pedro Doria Meunier



On 10/09/2009 02:38 PM, Sam Mason wrote:
> On Fri, Oct 09, 2009 at 11:39:47AM +0100, Pedro Doria Meunier
> wrote:
>> I cannot simply use "Set Client Encoding to LATIN1" as the
>> "client" itself is the script ... :)
>
> What does this mean? surely if it's just a "script" you can put
> another line at the beginning of the script that says this?
>
> If you really can't do this, how about using ALTER USER to change
> the the user that they use latin1 by default?
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAkrPTYQACgkQ2FH5GXCfxAvzSQCfV1tdIq3NSQVN0O8gNfQS1Iok
wxMAoIyGe2pQeWz4k3HSaeIEOaT4r49G
=/gqA
-----END PGP SIGNATURE-----

Re: Posgresql to MSsql encoding problem

От
Scott Marlowe
Дата:
On Fri, Oct 9, 2009 at 8:49 AM, Pedro Doria Meunier
<pdoria@netmadeira.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Sam,
> Thanks for your answer! :)
>
> The matter of fact is that the script itself is the connected client
> where the postgresql server is concerned.
>
> It then connects to another server (the M$SQL one) and, on a row
> basis, inserts data coming from the aforementioned connection...
>
> So, to all effects, the script is *the* client... :)

It's a php script, right?  Just issue a pg_query("set client encoding
yadayada;") at the beginning.

Re: Posgresql to MSsql encoding problem

От
"Leif B. Kristensen"
Дата:
On Friday 9. October 2009, Scott Marlowe wrote:
>On Fri, Oct 9, 2009 at 8:49 AM, Pedro Doria Meunier
>
><pdoria@netmadeira.com> wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Hi Sam,
>> Thanks for your answer! :)
>>
>> The matter of fact is that the script itself is the connected client
>> where the postgresql server is concerned.
>>
>> It then connects to another server (the M$SQL one) and, on a row
>> basis, inserts data coming from the aforementioned connection...
>>
>> So, to all effects, the script is *the* client... :)
>
>It's a php script, right?  Just issue a pg_query("set client encoding
>yadayada;") at the beginning.

PHP even has a special function for it:

pg_set_client_encoding($db, LATIN1);
--
Leif Biberg Kristensen | Registered Linux User #338009
Me And My Database: http://solumslekt.org/blog/