[Bug 1654688] Re: Printf does not properly justify non-ASCII characters

xhienne 1654688 at bugs.launchpad.net
Fri Jun 16 14:58:12 UTC 2017


In my opinion, this is not a bug (and probably not a feature either) but
the expected behavior.

bash's printf is a slightly modified version of the underlying printf()
function provided by the C standard library. The printf(3) manual
explicitly states that the precision is a number of _bytes_, not a
number of characters. So this is the expected result with multibyte
characters like 'á'.

You might want to switch to a ISO-8859 character set if you want your
'á' character to only take one byte of memory.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to bash in Ubuntu.
https://bugs.launchpad.net/bugs/1654688

Title:
  Printf does not properly justify non-ASCII characters

Status in bash package in Ubuntu:
  New

Bug description:
  I have a script that outputs arbitrary Unicode characters in neat
  columns, but for anything outside the Basic Latin range (i.e.
  codepoints > 127), the justification is off. For example, both below
  commands should output a leading space:

  $ printf "%2s\n" 'a'
   a
  $ printf "%2s\n" 'á'
  á

  The spacing problem starts between U+7F and U+80. If you try to print
  two leading spaces, the same problem occurs between U+7FF and U+800.

  This affects the binary /usr/bin/printf as well, but I'm not sure
  where to report a bug for that.

  Ubuntu version: 14.04.5
  Bash version: 4.3-7ubuntu1.5 (latest)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1654688/+subscriptions



More information about the foundations-bugs mailing list