• Este debate tiene 2 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 2 años por Jon Ander (IGN).
Viendo 3 entradas - de la 1 a la 3 (de un total de 3)

Encoding



  • Jon Ander (IGN)
    Participante
    Jon Ander (IGN)

    Hola,

    Estoy intentando convertir un texto de una codificacion a otra, estoy realizando en Extensiones y he visto que hay una codeunit nueva que es Encoding.

    El codigo que he realizado es el siguiente:

    Message(encoding.Convert(65001, 28594, ‘España’));

    y la respuesta es: EspaÃ?a

    No me lo convierte de UTF-8 a ISO-8859-1, ¿Sabéis como podría realizar esto sin utilizar DotNet?

    Muchas Gracias.

    #1020666

    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Hola Jon,

    Años atrás usábamos una codeunit con unas funciones muy sencillas para cambiar de Ascii a Ansi. Básicamente hacían un replace de texto.

    No se si alguien ha creado una similar para cambiar de UTF a ISO… podrías buscar.

    Sino, también puede mirar el código del Ascii-Ansi converter y ver si lo puedes adaptar a lo que necesitas. El enlace de descarga está aquí: https://mibuso.com/downloads/ansi-ascii-converter

    Salut!
    Laura Nicolàs

     

     

    #1020667

    Jon Ander (IGN)
    Participante
    Jon Ander (IGN)

    Buenas Laura,

    Gracias por la respuesta, ya lo pense en utilizar algo similar, el problema es que tengo que cambiar 2 caracteres por 1, y buscar todas la codificaciones de UTF para los simbolos “raro” me parece una barbidad…

    He visto, que microsoft tiene una codeunit (Encoding) pero creo que lo ha realizado mal…

    El codigo de dicha funcion es:

    SourceEncoding := Encoding.GetEncoding(SourceCodepage);
    DestinationEncoding := Encoding.GetEncoding(DestinationCodepage);

    SourceBytes := SourceEncoding.GetBytes(Text);
    DestinationBytes := Encoding.Convert(SourceEncoding, DestinationEncoding, SourceBytes);
    ConvertedText := DestinationEncoding.GetString(DestinationBytes);

    yo lo he simulado en C# y no funciona, en cambio si haces un ligero cambio, si:

    Encoding SourceEncoding = Encoding.GetEncoding(“UTF-8”);
    Encoding DestinationEncoding = Encoding.GetEncoding(“ISO-8859-1”);
    Byte[] SourceBytes = SourceEncoding.GetBytes(“España”);
    Byte[] DestinationBytes = Encoding.Convert(SourceEncoding, DestinationEncoding, SourceBytes);
    string ConvertedText = SourceEncoding.GetString(DestinationBytes); //Aqui es donde hay que cambiar, DestinationEncoding por SourceEncoding
    MessageBox.Show(ConvertedText);

    Podria replicar yo esa codeunit, pero al utilizar DotNet no me lo permite si quiero adaptarme al Universal Code….

    Saludos.

    #1020668
Viendo 3 entradas - de la 1 a la 3 (de un total de 3)

Debe iniciar sesión para responder a este tema.