[Lazarus-es] La letra Ñ

José Mejuto joshyfun en gmail.com
Mie Ago 4 11:39:26 CEST 2010


Hello franmate,

Wednesday, August 4, 2010, 1:30:13 AM, you wrote:

fgc> Ok, correcto , pero con UTF8ToAnsi('Ñ')[1] no obtienes el caracter Ñ
fgc> en una aplicacion GUI , lo acabo de comprobar en UBUNTU
fgc> edit1.text:=UTF8ToAnsi('Ñ')[1];
fgc> y length(UTF8ToAnsi('Ñ')) es 2

Vale, es cierto, ya que estás en Ubuntu casi seguro, lo anterior
funciona en Windows en que la consola es "codepage", mientras que tu
Ubuntu debe de ser ES_es.UTF8, o sea que tu ANSI es UTF8, por lo tanto
AnsiToUTF8 y su inversa no hacen nada de nada, ya que convierten de
UTF8 a UTF8.

En tu caso tendrás que usar UTF8ToISO_8859_1 ya que quieres seguir
usando "codepages", cosa que no deberías hacer, pero bueno.

Una aplicación GUI en Ubuntu supongo que GTK2 siempre quiere las
strings en UTF8, por lo tanto:

var
  a,b,c: string;
begin
  a:=UTF8ToISO_8859_1('Ñ')[1];
  Edit1.Text:=IntToStr(Length(a)); //debería ser 1
  b:=ISO_8859_1toUTF8(a);
  Edit2.Text:=IntToStr(Length(b)); //debería ser 2
  Edit3.Text:=ISO_8859_1toUTF8(a); //Debería poner una Ñ
  //Lo correcto sería usar esta última forma, ya que no puedes
  //asegurar que el dispositivo de salida sea UTF8, siempre que
  //escribas en una consola.
  Edit4.Text:=UTF8ToAnsi(ISO_8859_1toUTF8(a)); //Debería poner una Ñ
end;

-- 
Best regards,
 José





More information about the Lazarus-es mailing list