Re: glib-2.2.1: g_print() with UTF-8 characters
- From: Owen Taylor <otaylor redhat com>
- To: Ulf Karlsson <ulfc kortedala phetto com>
- Cc: gtk-list gnome org
- Subject: Re: glib-2.2.1: g_print() with UTF-8 characters
- Date: 02 Mar 2003 21:26:16 -0500
On Sat, 2003-03-01 at 13:20, Ulf Karlsson wrote:
> Hi,
>
> I'm trying to print strings containing swedish characters in columns
> by doing
>
> g_print("%-16s%-16s\n", "Hallå", "Världen");
>
> The problem seems to be that vasprintf isn't UTF-8-aware and counts
> the swedish UTF-8 character as two characters and thus only adds 10
> whitespaces after the first string, with the consequence that the
> second string is one position left of where it is supposed to be!
Notes here:
- Glibc has a "feature" where %Ns actually checks for a whole
number of characters in the current encoding. So, unless you
are sure you are always going to be in an UTF-8 locale, avoid
using %Ns. (You are basically OK for iso-8859-1, but will
have problems in say, a Japanese locale.)
- If you want a certain number of columns, than neither number
of characters or number of bytes works. A rough approximation
is that if g_unichar_iswide(ch) is TRUE, then the character
takes two columns, otherwise it takes one.
You'll probably want to write a function that takes a string
and pads/chops it to fit in a certain number of columns.
Regards,
Owen
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]