[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    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;

  2. #2
    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
  •