Follow-up Comment #5, bug #15377 (project freeciv):

Yep, that is surely correct.

"These  functions  check  whether  c,  which  must  have the value of an
unsigned char or EOF, falls into a certain character class according to the
current locale."

Each of the "character function wrappers" in support.[ch] works only on
characters in the current locale, which in freeciv parlance is the local
encoding, and generally not the same as UTF-8 at all. In other words, these
functions cannot be used on nearly all freeciv strings without causing these
problems.

Replacing these is not an easy task.  Their very nature is to operate
byte-by-byte, but with freeciv using utf-8 internally this is not possible. 
One alternative used elsewhere is to convert the utf-8 string to a
fixed-width encoding such as UCS2 (similar to utf-16) or UCS4 (similar to
utf-32) which can then be operated on byte-by-byte, but since that is also
not the "current locale" the functions will not work on those characters
either.  Having all of Freeciv use ucs4 internally could even be an option,
discussed previously that would prevent all such problems as there could then
be no confusing "internal" strings from "current locale" strings; however,
this would require a LOT of work and has been dismissed in the past.

Additionally there may be a few locations where the text is ascii and the
character functions will and should be used.  Maybe.

I'll take a look at where these functions are used and what might be done
about them.

-jason


    _______________________________________________________

Reply to this item at:

  <http://gna.org/bugs/?15377>

_______________________________________________
  Message sent via/by Gna!
  http://gna.org/


_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to