DrDiettrich wrote:

peter green wrote:

ok i see a MAJOR problem with the semantics of those functions.

they assume that one widechar is equivilent to one ansichar (that is the
source count of widechars will equal the destination count of ansichars or
the source count of widechars will equal the destination count of
ansichars).

this is simply not the case for many encodings. (utf-8 sjis euc to name just
a few)


I came across such problems in another project (CrossPoint). IMO the
best solution is a separation into true fixed-char strings (1, 2, 4?
byte/char), and a true string class for more general encodings. The
string class(es) then also can include proper support for code pages,
MBCS, 7-bit codes, MIME etc.

The only universal international representation for strings is Unicode
(currently 32 bit), that doesn't require any conversions.

That's not true. E.g. the german umlauts can be represented by 2 chars when using UTF-32 (the char and the two dots), same apply to a lot of other languages.


UTF and other

UTF-8 is unicode as well, unicode is a standard which decribes char mappings and encodings besides other things.


encodings can save memory, but only at the cost of runtime overhead,
that's why I'd wrap these into classes.

Delphi uses AnsiString for both single and multi byte character strings,
and I'm not sure whether WideChar (as used by Windows) is Unicode-16 or
UTF-16. In international applications (mail!) the handling of such
strings can become a mess, when the assumptions about the encoding of
some string (code page...) don't hold. When consequently records are
used to hold strings together with an indication of the actual encoding,
then a dedicated standard string class would be a better solution.

Encoding isn't the main problem, you need dedicated procecures and functions for unicode comparision, upper/lower conversion etc. To achive this platfrom independend is very hard ...



_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to