-
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.
-
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.
-
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)
-
Dann brauchst du doch nur die Libs zu laden, PASE installieren und los gehts.
-
Hallo chrisssiie!
Hast du die Integration in RPGLE schon umgesetzt?
-
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;
-
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
-
By Rainer Ross in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 28-10-16, 16:16
-
By weidenhammer in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 07-05-15, 11:37
-
By danielfeurstein in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 22-07-02, 15:19
-
By Bruno Jakob in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 28-02-02, 12:57
-
By Markus Ralf in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-10-01, 16:09
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks