[fpc-devel] Ansistring code page (was: bug report 20473: Please add a directive to define string=utf8string)

Jonas Maebe jonas.maebe at elis.ugent.be
Thu Oct 13 15:21:11 CEST 2011


On 13 Oct 2011, at 15:02, Paul Ishenin wrote:

> Then use {$codepage UTF8} only. This directive treats all ansistring  
> constants in UTF8 codepage. So the next code:
> {$codepage UTF8}
> var
>  s: ansistring;
> begin
>  s := 'utf8 string';
>  WriteLn(StringCodePage(s));
> end.
>
> will output CP_UTF8 constant.

This I don't really understand. Shouldn't the constant be converted at  
run time from UTF-8 to the DefaultSystemCodePage to make sure that an  
ansistring(0) variable always contains strings encoded in the  
DefaultSystemCodePage? If you assign e.g. a string(866) variable to a  
plain ansistring variable, then such a conversion is also done, no?

I think the only case in which the source code encoding should be kept  
is in case you assign the string constant to a rawbytestring.


Jonas



More information about the fpc-devel mailing list