| |
|
|
| Ragnar Rehbein
Thread: [...] Hab mich heute auch gerade mit UTF-8 quälen müssen. Ich brauchte eine Umwandlung von ANSI zu UTF-8. Die Längenbestimmung der resultierenden Strings hat zuerst nicht so funktioniert wie erwartet, deshalb die etwas umständlich erscheinende Methode mit dem Abtrennen der NULL-Bytes. KompilierenMarkierenSeparieren $H windows.ph
{$cleq}
proc AnsiToUTF8
parameters ansistring$
declare unicode$, utf8$, laenge&
laenge& = len(ansistring$)*2
unicode$ = mkstr$(chr$(0),laenge&)
~MultiByteToWideChar(~CP_ACP,0,Addr(ansistring$),-1,addr(unicode$),laenge&)
laenge& = ~WideCharToMultiByte(~CP_UTF8,0,Addr(unicode$),-1,0,0,0,0)
UTF8$ = mkstr$(chr$(0),laenge&)
~WideCharToMultiByte(~CP_UTF8,0,Addr(unicode$),len(unicode$),Addr(UTF8$),laenge&,0,0)
utf8$ = substr$(utf8$,1,chr$(0))
return utf8$
endproc
proc UTF8ToAnsi
parameters utf8$
declare ansistring$, unicode$, laenge&
laenge& = len(utf8$) * 2
unicode$ = mkstr$(chr$(0),laenge&)
~MultiByteToWideChar(~CP_UTF8,0,Addr(utf8$),-1,Addr(unicode$),laenge&)
ansistring$ = mkstr$(chr$(0),laenge&)
~WideCharToMultiByte(~CP_ACP,0,Addr(unicode$),-1,Addr(ansistring$),laenge&,0,0)
ansistring$ = substr$(ansistring$,1,chr$(0))
return ansistring$
endproc
cls
declare x$
x$ = ansiToUTF8(Rön Réne)
print x$
writeini c:utf8.txt,code,utf8code=x$
x$ = UTF8ToAnsi(x$)
print x$
writeini c:utf8.txt,code,ansicode=x$
waitinput
Gruß Ragnar |
|
|
| |
|
|