Re: utf-8 character is displayed badly in GPA interface (Win32)

Werner Koch <[email protected]> Wed, 02 May 2007 19:30:51 +0200
Newsgroups gmane.comp.encryption.gpg.gpa.devel
Message-ID <[email protected]>
On Wed,  2 May 2007 14:32, [email protected] said:

> Is there a problem with the GPA ?

Yes, it is due to this simple heuristics:

  /* Make sure the encoding is UTF-8.  Test structure suggested by
     Werner Koch.  */
  for (s = string; *s && !(*s & 0x80); s++)
    ;
  if (*s && !strchr (string, 0xc3))
    {
      /* The string is Latin-1.  */
      return  g_convert (string, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
    }
  else
    {
      /* The string is already in UTF-8.  */
      return g_strdup (string);
    }

Obviously this is not correct.  Your name is correctly utf-8 encoded as
"Cristian Secar\xc4\x83".  The above code will falsely assume that this
is Latin-1 one and converts the string to utf-8.  The code works for the
French an German characters but obviously not tested with other
character sets. 

The hack is required because PGP has a long standing bug which did not
do any conversion and stored names verbatim.  Most systems at that time
used Latin-1 so German and other folks got their Umlauts (e.g. Müller)
wrong.

The problem is that an utf-8 strings may also be a valid Latin-1
string.  Most names would look strange, though. I will change the test
to take the continuation bytes in account.


Shalom-Salam,

   Werner


_______________________________________________
Gpa-dev mailing list
[email protected]
http://lists.gnupg.org/mailman/listinfo/gpa-dev