printf and utf-8

Svein Halvor Halvorsen svein.h at lvor.halvorsen.cc
Mon Jan 26 14:59:25 PST 2009


Chuck Swiger wrote:
> On Jan 26, 2009, at 1:58 PM, Svein Halvor Halvorsen wrote:
>> As far as I can see, printf is not calculating strings lengths 
>> correctly when using utf-8 encoding. Either that, or I'm using byte 
>> count, and can't find the character count :-/
> 
> printf(1) explicitly states that it works with ASCII and ANSI 
> X3.159-1989 (``ANSI C89'') character escapes, and it also notes:
> 
>      Multibyte characters are not recognized in format strings (this is 
> only a
>      problem if `%' can appear inside a multibyte character).
> 
> Some platforms have a printf_l(3) which is locale/xlocale-aware, but 
> there doesn't seem to be a corresponding CLI utility which understands 
> Unicode/UTF8/widechars.

Thanks for your explanation.

Do you have a suggestion to solve the following problem without using 
printf(1):

I have a text file that I want to print in a "box" on a terminal from a 
shell script. Now I've padded the lines with spaces to a certain length 
using printf %-70s and appended the box drawing character. Is there 
another simple way that will work with utf-8?


	sv.


More information about the freebsd-questions mailing list