Quiero codificar cadenas como lo hace Python.Delphi: Cadenas de codificación como Python do
código Python es la siguiente:
def EncodeToUTF(inputstr):
uns = inputstr.decode('iso-8859-2')
utfs = uns.encode('utf-8')
return utfs
Esto es muy simple.
Pero en Delphi no entiendo, cómo codificar, para forzar primero el conjunto de caracteres buenos (no importa, qué computadora tenemos).
yo probamos este código de prueba para ver la conversión:
procedure TForm1.Button1Click(Sender: TObject);
var
w : WideString;
buf : array[0..2048] of WideChar;
i : integer;
lc : Cardinal;
begin
lc := GetThreadLocale;
Caption := IntToStr(lc);
StringToWideChar(Edit1.Text, buf, SizeOF(buf));
w := buf;
lc := MakeLCID(
MakeLangID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
0);
Win32Check(SetThreadLocale(lc));
Edit2.Text := WideCharToString(PWideChar(w));
Caption := IntToStr(AnsiCompareText(Edit1.Text, Edit2.Text));
end;
La entrada es: "árvíztűrő tükörfúrógép", la frase húngaro probador de acento. El lc local es 1038 (hun), el nuevo lc es 1033.
Pero esto cada vez hace 0 resultado (mismas cadenas), y los acentos son los mismos, no pierdo ŐŰ que no está en inglés lang.
¿Qué hago mal? ¿Cómo hago lo mismo que Python?
Gracias por toda la ayuda, enlace, etc: dd
-1 EncodeToUTF no compila para Delphi2009, cambiará mi voto cuando se solucione. – Wodzu
He modificado los ejemplos. –
Gracias Remy, +1 – Wodzu