On Tue, Jan 27, 2009 at 12:05:28AM +0100, Svein Halvor Halvorsen wrote: > > 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? >
What's your perl like? http://search.cpan.org/~sadahiro/String-Multibyte-1.05/Multibyte.pm http://perldoc.perl.org/perlfaq6.html#How-can-I-match-strings-with-multibyte-characters%3f Looks like they might be interesting. Regards, -- Frank Contact info: http://www.shute.org.uk/misc/contact.html _______________________________________________ firstname.lastname@example.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"