Re: Unicode UTF-8 table formatting for psql text output

Поиск
Список
Период
Сортировка
От Roger Leigh
Тема Re: Unicode UTF-8 table formatting for psql text output
Дата
Msg-id 20091005193942.GB12531@codelibre.net
обсуждение исходный текст
Ответ на Re: Unicode UTF-8 table formatting for psql text output  (Peter Eisentraut <peter_e@gmx.net>)
Ответы Re: Unicode UTF-8 table formatting for psql text output  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Sun, Oct 04, 2009 at 11:22:27PM +0300, Peter Eisentraut wrote:
> I have a comment on this bit:
>
> > @@ -125,6 +128,17 @@ main(int argc, char *argv[])
> >
> >         /* We rely on unmentioned fields of pset.popt to start out
> > 0/false/NULL */
> >         pset.popt.topt.format = PRINT_ALIGNED;
> > +
> > +       /* Default table style to plain ASCII */
> > +       pset.popt.topt.table_style = &asciiformat;
> > +#if (defined(HAVE_LANGINFO_H) && defined(CODESET))
> > +       /* If a UTF-8 locale is available, switch to UTF-8 box drawing
> > characters */
> > +       if (pg_strcasecmp(nl_langinfo(CODESET), "UTF-8") == 0 ||
> > +           pg_strcasecmp(nl_langinfo(CODESET), "utf8") == 0 ||
> > +           pg_strcasecmp(nl_langinfo(CODESET), "CP65001") == 0)
> > +               pset.popt.topt.table_style = &utf8format;
> > +#endif
> > +
> >         pset.popt.topt.border = 1;
> >         pset.popt.topt.pager = 1;
> >         pset.popt.topt.start_table = true;
>
> Elsewhere in the psql code, notably in mbprint.c, we make the decision
> on whether to apply certain Unicode-aware processing based on whether
> the client encoding is UTF8.  The same should be done here.
>
> There is a patch somewhere in the pipeline that would automatically set
> the psql client encoding to whatever the locale says, but until that is
> done, the client encoding should be the sole setting that rules what
> kind of character set processing is done on the client side.

OK, that makes sense to a certain extent.  However, the characters
used to draw the table lines are not really that related to the
client encoding for data sent from the database (IMHO).

I think that (as you said) making the client encoding the same as the
locale character set the same in the future would clear up this
discrepancy though.  Using the client encoding, there's no guarantee
the client locale/terminal can handle UTF-8 when the client encoding is
UTF-8.

I have attached an updated patch which implements your suggested
behaviour.  It also renames the option to "linestyle" rather than
"tablestyle" which I think represents its purpose a bit more clearly.


Thanks,
Roger

--
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [PATCH] DefaultACLs
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [PATCH] DefaultACLs