[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    75

    RPGLE E-Mail nach Punycode konvertieren

    Hallo,

    gibt es eine Möglichkeit in RPGLE eine E-Mail - Adresse nach Punycode zu kodieren?
    (Wegen Umlauten in E-Mail Adresse?)

    Ich habe gesehen, dass es in AIX die libidn gibt, wo es ein punycode_encode gibt, allerdings habe ich noch eine Integration in RPGLE gefunden.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wie heißt es doch so schön: Selbst ist der Programmierer!
    https://tools.ietf.org/html/rfc3492
    Dort findet man auch die Verfahren der Kodierung/Dekodierung.
    Wichtig ist, dass vom ASCII-Code (bzw. Unicode UCS2) ausgegangen wird, was aber von ILERPG unterstützt wird.

    Ganz am Ende findet man eine C-Implementierung, die man aber relativ leicht in ILERPG adaptieren könnte. Zugegeben, nicht ganz so einfach.
    Allerdings könnte man den C-Code ggf. über eine PASE-Umgebung auch auf AS/400 lauffähig machen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    75
    schade -.-

    Hatte gehofft, dass das evtl. schon jemand gemacht.
    Für curl etc. gibt es ja auch schon Vorlagen (http://yips.idevcloud.com/wiki/index.php/PASE/LIBPASE)

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Dann brauchst du doch nur die Libs zu laden, PASE installieren und los gehts.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Oct 2020
    Beiträge
    1
    Hallo chrisssiie!

    Hast du die Integration in RPGLE schon umgesetzt?

  6. #6
    Registriert seit
    Jan 2009
    Beiträge
    67
    Hatte gehofft, dass das evtl. schon jemand gemacht.
    Ja, das hat schon jemand gemacht, aber dieser jemand ist dermaßen schlecht im Marketing, dass das natürlich keiner weiß. Das Beste an der Sache ist, dass es schon auf dem IBM i Server installiert ist: ICU von IBM , siehe Bibliothek QICU.

    https://icu.unicode.org/

    Hier ein Beispiel:

    Code:
    **FREE
    
    ctl-opt dftactgrp(*no) actgrp(*caller) bnddir('QICU/QXICUAPIBD');
    
    
    // U_CFUNC int32_t
    // u_strToPunycode(const UChar *src, int32_t srcLength,
    //                 UChar *dest, int32_t destCapacity,
    //                 const UBool *caseFlags,
    //                 UErrorCode *pErrorCode);
    dcl-pr u_strToPunycode int(10) extproc('u_strToPunycode_4_0');
       source pointer value;
       sourceLength int(10) value; // -1 if NULL-terminated
       target pointer value;
       targetLength int(10) value;
       caseFlags pointer const; // array of int(10) (one per char) or NULL)
       errorCode int(10);
    end-pr;
    
    dcl-pr strlen uns(10) extproc('strlen');
       string pointer value;
    end-pr;
    
    
    main();
    *inlr = *on;
    
    
    dcl-proc main;
       dcl-s domain ucs2(50) ccsid(*utf16);
       dcl-s punycode ucs2(50) ccsid(*utf16);
       dcl-s rc int(10);
       dcl-s errorCode int(10);
       dcl-s message char(50);
    
       domain = 'küchen.de' + x'00';
    
       rc = u_strToPunycode(%addr(domain) : -1 : %addr(punycode) : %size(punycode) : *null : errorCode);
    
       message = 'Return code: ' + %char(rc);
       dsply message;
       message = 'Error code: ' + %char(errorCode);
       dsply message;
    
       message = punycode;
       dsply message;
    end-proc;

  7. #7
    Registriert seit
    Jan 2009
    Beiträge
    67
    FYI: Was im Beispiel noch nicht berücksichtigt ist: Laut API ist der Output von Strings in ICU immer NULL terminiert, wenn nix anderes angegeben ist. Also entweder die Länge des Output berücksichtigen (Rückgabewert der Funktion) oder NULL im Output suchen.

    PS: Ich würde die Länge benutzen.

Similar Threads

  1. Konvertieren in Unicode
    By Rainer Ross in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 28-10-16, 17:16
  2. SQL Datum konvertieren
    By weidenhammer in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 07-05-15, 12:37
  3. CL Variablen konvertieren
    By danielfeurstein in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-07-02, 16:19
  4. Übergabe von Daten HTTP nach RPGLE
    By Bruno Jakob in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 28-02-02, 13:57
  5. Datenbankdateien automatisch konvertieren
    By Markus Ralf in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-10-01, 17:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •