[fpc-pascal] Problem with string manager

Jonas Maebe jonas.maebe at elis.ugent.be
Wed Sep 9 22:08:10 CEST 2009


On 09 Sep 2009, at 21:10, Joao Morais wrote:

> The following cgi script shows "??" in the browser if cwstring is
> declared, and works as expected if the declaration is removed. Is
> there something I can change in order to work with widestrings,
> cwstring and special chars? fixes_2_4 with linux.

a) bug: you are not specifying to the compiler in what code page the  
strings in your source code are encoded. As a result, the compiler  
will assume it's the default (8859-1), unless their is an UTF-8 BOM  
(in which case the compiler parses it as UTF-8)
b) when you use cwstring, the RTL will convert any widestring you  
write to the current locale. Under *nix this is defined by the "LANG"  
environment variable (which in turn controls the various LC_*  
environment variables). If the current locale does not support the  
character you try to write, you will get question marks.

I guess what's happening if you don't use cwstring and don't specify a  
code page, that the compiler dumps the character as it appears in the  
source code straight into the widestring without any conversion, and  
that the rtl later on extracts it (when "converting" from widestring  
to ansistring) also without any conversion. So it only happens to work  
because the code page in which you wrote the source code happens to be  
the same as the code page that the browser at the other side uses as  
default.


Jonas



More information about the fpc-pascal mailing list