> Tech > Convertir des données en UCS2 ou UTF-16

Convertir des données en UCS2 ou UTF-16

Tech - Par iTPro - Publié le 24 juin 2010
email

Q: Existe-t-il un moyen de convertir des données EBCDIC en UTF-16 dans RPG? J’ai lu vos conseils à propos de l’API Code Conversion (iconv), mais vous avez démontré une conversion en UTF-8 plutôt qu’en UTF-16. J’ai besoin d’écrire un fichier stream en format UTF-16 pour qu’il soit lu

par une application tierce.

R: RPG prend en charge UCS2 et UTF-16 (qui est un superensemble de UCS2). Bien que l’API iconv() fonctionne, il est beaucoup plus facile d’utiliser le support intégré de RPG. Soit l’exemple de code suivant :

D string1 S 50A
D string2 S 50C

La variable appelée string1 est une chaîne de caractères ordinaire : ses champs alphanumériques nous sont familiers. La seconde variable, string2, est similaire à cela près qu’au lieu du type de données A, j’utilise le type de données C. Le type de données C est pour UCS2 Unicode.

Comme avec string1, je l’ai faite suffisamment grande pour qu’elle contienne 50 caractères, mais comme UCS2 utilise deux octets par caractère, string2 occupe 100 octets de mémoire pour ces 50 caractères, tandis que string1 n’en occupe que 50. Par défaut, les champs UCS2 (type de données C) sont en CCSID (Coded Character Set Identifier) 13488. Cependant, RPG fournit un mot-clé CCSID que vous pouvez utiliser pour contrôler cela. Si vous voulez des données UTF-16, vous pouvez définir votre champ avec CCSID 1200, comme le montre la figure 2.

RPG contient aussi une BIF (built-in function) %UCS2 qui vous permet de convertir facilement des données entre EBCDIC et Unicode. Vous pouvez coder un littéral avec le BIF %UCS2 et l’attribuer directement à un champ, ou bien convertir de l’EBCDIC du job en CCSID du champ UCS2 avec la même BIF (figure 3). Naturellement, vous pouvez aussi convertir dans l’autre sens :

Test2 = %char(Test3);

Il est facile d’utiliser ce procédé pour écrire des données dans un fichier stream dans l’IFS également. Ecrivez simplement le champ %UCS2 au lieu du champ alphanumérique quand vous appelez l’API write(), comme dans la figure 4. (Les membres ProVIP peuvent télécharger cet exemple de code, y compris le membre /copy, à pentontech.com/IBM Content/Document/article/52230_60_Utf16.zip.)

– Scott Klement

Téléchargez gratuitement cette ressource

Comment sécuriser la Digital Workplace ?

Comment sécuriser la Digital Workplace ?

Avec le recours généralisé au télétravail, les entreprises ont ouvert davantage leur SI. En dépit des précautions prises, elles ont mécaniquement élargi leur surface d’exposition aux risques. Découvrez 5 axes à ne pas négliger dans ce Top 5 Sécurité du Télétravail.

Tech - Par iTPro - Publié le 24 juin 2010