[Lazarus] PAnsiChar to UTF8 issues

Anton Kavalenka anton.k at tut.by
Tue Apr 9 17:41:06 CEST 2013


On 09.04.2013 18:07, Leonardo M. Ramé wrote:
> On 2013-04-09 15:28:56 +0100, Martin wrote:
>> On 09/04/2013 15:22, Leonardo M. Ramé wrote:
>>> On 2013-04-09 15:20:33 +0100, Martin wrote:
>>>> On 09/04/2013 15:11, Leonardo M. Ramé wrote:
>>>>> Hi, I'm working with a "C" shared library that returns a pointer to
>>>>> char. It's all ok when not using special characters such as "ñ" or
>>>>> accents, but when I get these, they are replaced by "?" signs.
>>>>>
>>>>> For example, if I receive an "ñ", the debugger shows this:
>>>>>
>>>>> lStr := 'A'#209'oranza';
>>>>>
>>>>> The correct string is:
>>>>>
>>>>> lStr := 'Añoranza';
>>>>>
>>>>> What can I do to show accented characters?.
>>>>>
>>>> It's a known problem and already reported. here is no fix available
>>>> yet. The debugger does can not yet display this.
>>>>
>>>> Actually it is 2 problems.
>>>> 1) is the "?"
>>>> 2) the other is #209 etc
>>>>
>>> Well, I can live with the debugger problem, but is there a solution for
>>> the "?" sign end displaying in my app?.
>>>
>> If you get an ansi string, you must convert it to utf8 before giving
>> it to the LCL
>>
>> need to find the exact function
>>
>> label.caption :- ansitoutf8(s) // assuming it is ansi in the system codepage
>>
> Yes, I've tried that, but it shows a box with an X inside where the ñ
> should appear...
>
> My codepage is es_AR.UTF-8.
>
u:unicodestring;

u:=Putf8Char(buf); // or PAnsiChar depends on what your C DLL returns

label.caption:=u; // implicit cast



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20130409/dd34b626/attachment-0003.html>


More information about the Lazarus mailing list