Its a Rails app and I do have:

  encoding: utf8

Set in my DB configuration.

On Fri, Sep 30, 2011 at 12:38 PM, Scott Marlowe <scott.marl...@gmail.com>wrote:

> On Fri, Sep 30, 2011 at 1:35 PM, Cody Caughlan <tool...@gmail.com> wrote:
> >
> >
> > On Fri, Sep 30, 2011 at 12:31 PM, Scott Marlowe <scott.marl...@gmail.com
> >
> > wrote:
> >>
> >> On Fri, Sep 30, 2011 at 12:46 PM, Cody Caughlan <tool...@gmail.com>
> wrote:
> >> > Please see below.
> >> >
> >> > On Fri, Sep 30, 2011 at 11:38 AM, Scott Marlowe
> >> > <scott.marl...@gmail.com>
> >> > wrote:
> >> >>
> >> >> On Fri, Sep 30, 2011 at 12:26 PM, Cody Caughlan <tool...@gmail.com>
> >> >> wrote:
> >> >> > Thanks Scott. See below:
> >> >> >
> >> >> > On Fri, Sep 30, 2011 at 11:05 AM, Scott Marlowe
> >> >> > <scott.marl...@gmail.com>
> >> >> > wrote:
> >> >> >>
> >> >> >> On Fri, Sep 30, 2011 at 11:25 AM, Cody Caughlan <
> tool...@gmail.com>
> >> >> >> wrote:
> >> >> >> > I would like to change my server_encoding which is currently
> >> >> >> > SQL_ASCII
> >> >> >> > to UTF8.
> >> >> >> >
> >> >> >> > I have existing data that I would like to keep.
> >> >> >> >
> >> >> >> > From my understanding of the steps I need to:
> >> >> >> >
> >> >> >> > 1) alter the template1 database encoding via
> >> >> >> >
> >> >> >> > UPDATE pg_database SET encoding = 6 where datname IN
> ('template0',
> >> >> >> > 'template1');
> >> >> >>
> >> >> >> Just create database using template0 as template and you can skip
> >> >> >> this
> >> >> >> step ^^
> >> >> >
> >> >> >
> >> >> > Wouldn't this only work if my template0 was UTF8 itself?
> >> >> > => select datname, pg_encoding_to_char(encoding) from pg_database;
> >> >> >        datname        | pg_encoding_to_char
> >> >> > ----------------------+---------------------
> >> >> >  template1            | SQL_ASCII
> >> >> >  template0            | SQL_ASCII
> >> >> >  postgres             | SQL_ASCII
> >> >> >
> >> >> > So it appears both template0 & template1 are SQL_ASCII, so how
> would
> >> >> > creating from a new DB from template0 be any different than
> >> >> > template1?
> >> >>
> >> >> Well, let's try, shall we?  From a freshly created cluster on my
> >> >> laptop, running 8.4:
> >> >>
> >> >> smarlowe=# select datname, pg_encoding_to_char(encoding) from
> >> >> pg_database;
> >> >>  datname  | pg_encoding_to_char
> >> >> -----------+---------------------
> >> >>  template1 | SQL_ASCII
> >> >>  template0 | SQL_ASCII
> >> >>  postgres  | SQL_ASCII
> >> >>  smarlowe  | SQL_ASCII
> >> >> (4 rows)
> >> >>
> >> >> smarlowe=# create database j template template0 encoding 'UTF8';
> >> >> CREATE DATABASE
> >> >>
> >> >> Seems to work.
> >> >>
> >> >> P.s. I'm not sure why it works, I just know that it does. :)
> >> >>
> >> >
> >> > Ok, I see what you mean. This would create a new DB with the proper
> >> > encoding. Which is "fine", and probably what I will do. I guess I see
> an
> >> > ideal scenario being one where we permanently convert the template
> >> > encoding
> >> > to UTF8 so going forward I dont have to worry about forgetting to
> adding
> >> > the
> >> > encoding= 'UTF8' for every new DB I create.
> >>
> >> Ah ok.  The way I fix that is this:
> >>
> >> update pg_database set datistemplate = false where datname='template1';
> >> drop database template1;
> >> create database template1 template template0 encoding 'UTF8';
> >>
> >> But your way would likely work too.
> >>
> >> >> I think you got it backwards, the -f should be somthing other than
> >> >> utf-8 right?  That's what the -t should be right?  Try iconv without
> a
> >> >> -f switch and a -t of utf-8 and see what happens...
> >> >
> >> > You're right, I had -f when I needed -t. I tried it again with the
> same
> >> > error:
> >> > $ iconv -t utf-8 foo.sql > utf.sql
> >> > iconv: illegal input sequence at position 2512661
> >>
> >> Any idea waht the actual encoding of your source database is?
> >> SQL_ASCII is basically not really ascii, more like anything goes.
> >
> >
> > How would I find this? pg_database says my DB is SQL_ASCII.
> > "show all" says
> > client_encoding = SQL_ASCII
> > server_encoding = SQL_ASCII
>
> It would have been set by the application accessing postgresql and
> inserting the data.  I.e. was it a windows app using a typical windows
> encoding?  etc.
>

Reply via email to