Hi List,
I'm writing an API interface that passes #0-terminated cstrings with encoding UTF8. What data type should be used to declare these parameters so that I may be able to use as much of 3.0+'s automatic encoding conversion as possible?
Some example declarations would look like:
procedure SetUserID(const NewValue: PUTF8Char);
function GetUserID(const Buf: PUTF8Char; const BufLength: UInt32): UInt32;If I read the wiki correctly, PAnsiChar would not be clear as it is always assumed to be CP_ACP, causing the compiler to generate conversions to DefaultSystemCodePage. I'm posting this to the Lazarus list instead of fpc-pascal because I already use LazUTF8 so CP_ACP really is CP_UTF8, but I want to be sure that the header always works whether LazUTF8 is used or not.
Is there a good way to do what I want, or would it be easier to use PUnicodeChar and pass the strings as UTF-16? How well would other languages work with that?
Thank you for any hints,
Martok
