[Lazarus] PAnsiChar to UTF8 issues

Leonardo M. Ramé l.rame at griensu.com
Tue Apr 9 19:35:59 CEST 2013


On 2013-04-09 18:41:06 +0300, Anton Kavalenka wrote:
> 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
> 

No, I've tried all kinds of combinations of ansitoutf8, unicodestring,
etc, but nothing works, all returns "?" or the box with the X in the
place of "ñ" or accents.

-- 
Leonardo M. Ramé
http://leonardorame.blogspot.com




More information about the Lazarus mailing list