Perhaps printf() needs some wide character extensions via %new characters
 
Regards

 Leslie
Mr. Leslie Satenstein
SENT FROM MY OPEN SOURCE LINUX SYSTEM.



From: Pádraig Brady <P@draigBrady.com>
To: Jan Novak <jn@turbo.sk>
Cc: 17196@debbugs.gnu.org
Sent: Sunday, April 6, 2014 6:15 AM
Subject: bug#17196: UTF-8 printf string formating problem

On 04/06/2014 12:17 AM, Jan Novak wrote:
> Hello,
>
> printf string format counts bytes instead of chars, which leads to broken output ...
> (the same problem occurs with bash built in printf)
>
>
> just try this:
>
> $ echo $LANG
> us_US.UTF-8
>
>
> $ printf "|%3s|\n" "a"
> |  a|
>
> $ printf "|%3s|\n" "á"    (char is a-acute)
> | á|
>
> expected output:
> |  á|
>
> Is there some easy solution ?
>
> TIA for the answer

Yes printf follows the C standard which only considers bytes.
awk does respect characters in width specifiers though:

  $ awk 'BEGIN{printf "|%3s|\n", "á"}'
  |  á|

I don't think we'd be able to change the current operation of printf
due to backwards compat reasons? Though we might be able to somehow leverage
the existing multibyte character aware alignment/truncation code in:
http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=blob;f=gl/lib/mbsalign.c;hb=HEAD

thanks,
Pádraig.