[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.120

    urlencode und UTF-8

    Hallo,
    ich muss die Parameter für einen URL-Aufruf encoden. Die Parameter können (theoretisch) irgendwelche DBCS-Zeichen sein. Z.B. polnische Sonderzeichen. Sie liegen im Format varucs2 vor. Die Funktion systools.urlencode empfängt als Parameter aber nicht UTF-16, sondern nur Zeichen vom Typ UTF-8. Vor allem ist der Rückgabewert der Funktion vom Typ UTF-8. Wie kann ich mir das denn in eine RPG-Variable speichern?

    In eine Variable von Type varucs2 geht es nicht.
    Wie kann ich eine Variable deklarieren, die UTF-8 kann?

    Dieter

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Leider gar nicht.
    Du definierst eine Variable vom Typ Char (also A) und konvertierst z.B. mittels SQL zwischen UCS2 und UTF8:
    exec sql set : MyUcs2 = cast( cast(: MyUtF8 as varchar(nn) ccsid 1208) as nvarchar(nn));
    exec sql set : myUtf8 = cast(: MyUcs2 as varchar(nn) ccsid 1208);

    Bedenke nur, dass als "nn" theoretisch das doppelte von UCS2 (also bis 4 Bytes) auftreten kann.
    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 2012
    Beiträge
    1.120
    Vielen Dank, Baldur. Ich hatte bereits befürchtet, dass das nicht geht. Na, dann muss ich das alles direkt im SQL lösen.
    Vielen Dank.

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Habe deinen Code jetzt implementiert, Baldur. Klappt sehr gut! Vielen Dank nochmal.
    Hier der Code, falls es jemanden interessiert:
    Code:
    dcl-proc um_urlEncodeUni export;   
       dcl-pi *n varchar(32000);
          url varucs2(16000) const;
       end-pi;
    
    dcl-s newUrl varchar(32000);
    
    //Die Funktion urlencode erwartet UTF-8:
    exec sql set :newUrl = SYSTOOLS.URLENCODE(cast(:url as varchar(30000) ccsid 1208), 'UTF-8');
    
    return newUrl;

Similar Threads

  1. SYSTOOLS.URLENCODE
    By KM in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 25-04-17, 09:44

Berechtigungen

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