Encoding

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Autor
    Entradas
  • #1020666
    Jon Ander (IGN)
    Participante

    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.

    #1020667
    Laura Nicolàs
    Superadministrador

    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

     

     

    #1020668
    Jon Ander (IGN)
    Participante

    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.

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.

10 cursos gratis, sin tarjeta

Accede a los cursos Gratis de Business Central

Instalación, ventas, fabricación y Power BI.

Acceso inmediato, sin límite de tiempo.