RES: print formated special characteres
Hi Peter, is language C standart.. On 2020-10-17 20:51:36 +0200, Matthias Apitz wrote: > El día sábado, octubre 17, 2020 a las 03:37:46p. m. -0300, Celso Lorenzetti escribió: > > > Somebody help me, please. > > > > How to make the texts are aligned with 10 characters? > > > > > > > > elog(INFO, "\n%-10s Fim\n%-10s Fim\n", "Variável", "Variavel"); Which programming language is this? PL/pgSQL? > Hola Celso, > > You can reproduce the same on the UNIX shell with: > > $ printf "\n%-10s Fim\n%-10s Fim\n" "Variável" "Variavel" > > Variável Fim > Variavel Fim Hmm. Zsh gets it right: trintignant:~ 0:31 :-) 1032% printf "\n%-10s Fim\n%-10s Fim\n" "Variável" "Variavel" Variável Fim Variavel Fim As do Perl and Python. > The second test (changing the accented char 'á' by 'X'), shows that > the problem/bug is a) more generic, not only in PostgreSQL and b) has > todo with being the UTF-8 char 'á' a two byte char, while 'X' is only > one byte. Yes, determining how much space a UTF-8 sequence occupies on screen is surprisingly hard. I'm not sure what the C standard says about that. But these days I would expect any programming language to get it right at least for the simple cases. hp -- _ | Peter J. Holzer| Story must make more sense than reality. |_|_) || | | | h...@hjp.at |-- Charles Stross, "Creative writing __/ | http://www.hjp.at/ | challenge!" -- Este email foi escaneado pelo Avast antivírus. https://www.avast.com/antivirus
RES: print formated special characteres
Thanks Tom Lane, got it, I will follow the suggestion Att, -Mensagem original- De: Tom Lane [mailto:t...@sss.pgh.pa.us] Enviada em: sábado, 17 de outubro de 2020 20:08 Para: Peter J. Holzer Cc: pgsql-general@lists.postgresql.org Assunto: Re: print formated special characteres "Peter J. Holzer" writes: > On 2020-10-17 20:51:36 +0200, Matthias Apitz wrote: >> El día sábado, octubre 17, 2020 a las 03:37:46p. m. -0300, Celso Lorenzetti >> escribió: >>> elog(INFO, "\n%-10s Fim\n%-10s Fim\n", "Variável", "Variavel"); > Which programming language is this? PL/pgSQL? Looks like C in the backend. >> The second test (changing the accented char 'á' by 'X'), shows that the >> problem/bug is a) more generic, not only in PostgreSQL and b) has todo >> with being the UTF-8 char 'á' a two byte char, while 'X' is only one >> byte. > Yes, determining how much space a UTF-8 sequence occupies on screen is > surprisingly hard. I'm not sure what the C standard says about that. But > these days I would expect any programming language to get it right at > least for the simple cases. Our version of snprintf intentionally counts bytes not characters, so that it does not have to make assumptions about what encoding the given string uses. It's somewhat unclear whether the C/POSIX standard mandates either of these interpretations. The GNU implementation of snprintf tries to count characters. But in the cases where that's mattered to us at all, it's generally been the wrong thing, because glibc didn't necessarily know the encoding to use. That's one reason why we stopped relying on libc's snprintf. The way to get this to work as Celso wishes would be to count characters and then do his own arithmetic about how much padding to add. regards, tom lane -- Este email foi escaneado pelo Avast antivírus. https://www.avast.com/antivirus
Re: print formated special characteres
po 19. 10. 2020 v 3:18 odesílatel Celso Lorenzetti napsal: > Hi Peter, > > is language C standart.. > > On 2020-10-17 20:51:36 +0200, Matthias Apitz wrote: > > El día sábado, octubre 17, 2020 a las 03:37:46p. m. -0300, Celso > Lorenzetti escribió: > > > > > Somebody help me, please. > > > > > > How to make the texts are aligned with 10 characters? > > > > > > > > > > > > elog(INFO, "\n%-10s Fim\n%-10s Fim\n", "Variável", "Variavel"); > > Which programming language is this? PL/pgSQL? > This is an internal function available in internal C API. As Tom Lane said in other mail - this internal API just doesn't support alignment for multibyte encodings. Regards Pavel > > > Hola Celso, > > > > You can reproduce the same on the UNIX shell with: > > > > $ printf "\n%-10s Fim\n%-10s Fim\n" "Variável" "Variavel" > > > > Variável Fim > > Variavel Fim > > Hmm. Zsh gets it right: > > trintignant:~ 0:31 :-) 1032% printf "\n%-10s Fim\n%-10s Fim\n" "Variável" > "Variavel" > > Variável Fim > Variavel Fim > > As do Perl and Python. > > > > The second test (changing the accented char 'á' by 'X'), shows that > > the problem/bug is a) more generic, not only in PostgreSQL and b) has > > todo with being the UTF-8 char 'á' a two byte char, while 'X' is only > > one byte. > > Yes, determining how much space a UTF-8 sequence occupies on screen is > surprisingly hard. I'm not sure what the C standard says about that. But > these days I would expect any programming language to get it right at least > for the simple cases. > > hp > > -- >_ | Peter J. Holzer| Story must make more sense than reality. > |_|_) || > | | | h...@hjp.at |-- Charles Stross, "Creative writing > __/ | http://www.hjp.at/ | challenge!" > > > -- > Este email foi escaneado pelo Avast antivírus. > https://www.avast.com/antivirus > > > >