UTF-8 dans un fichier LDIF

© Christian PAULUS. Document créé le 27 septembre 2001 , mis à jour le 14 mars 2007.

C'est le devoir de chaque homme de rendre au monde au moins autant qu'il en a reçu. Albert Einstein

Accueil du site > Astuces > LDAP > UTF-8 dans un fichier LDIF

Configuration / openLDAP 2.0.14

OpenLDAP v.2 accepte deux formats de texte : ASCII et UTF8.

Le format ASCII (7 bits) comprend les caractères alphabétiques et numériques mais pas les caractères diacritiques (accents).

Si vous exportez votre base avec la commande slapcat, vous découvrirez que les données contenant des caractères accentués ont été convertis en quelque chose d’illisible à un humain. C’est de l’UTF-8 en base 64. Vous noterez également que le nom de l’attribut, à gauche de ce champ, est suivi non pas d’un caractère deux points ’ :’, mais de deux caractères deux points ’ ::’.

Donc, entre le nom d’un attribut et le contenu du champ, il y a un seul ’ :’ pour une donnée ASCII, et deux ’ :’ pour une donnée UTF-8 en base 64. Entre ce ’ :’ ou ’ ::’ et le contenu du champ, il n’y a qu’un seul espace. C’est une règle stricte (lire les RFC 2252 et autres sur les BNF, etc.. prévoir une longue soiré d’hiver et du bon café).

Si vous désirez remplacer une donnée UTF-8 directement dans un fichier d’export au format LDIF, voici la marche à suivre :

  • Exportez votre base au format LDIF (voir si besoin un exemple d’export sur Reconstruire-une-base-OpenLDAP). La commande pour exporter une base OpenLDAP est slapcat ;
  • Editez le fichier LDIF obtenu, et cherchez le champ à modifier ;
  • Le nom de l’attibut, dans le cas d’un fichier LDIF à importer dans une base LDAP, doit être suivi d’un seul ’ :’, d’un espace, et de votre donnée au format UTF-8 . slapadd reconnaîtra ce champ comme étant au format UTF-8 est le transformera en base 64 et rajoutera le deuxième " :" nécessaire.
  • Re-importez votre base modifiée.

Il existe plusieurs outils pour convertir de l’ISO en UTF-8. Pour ma part, j’utilise utrans fourni avec i18ntools de G. Adam Stanislav (ftp://ftp.whizkidtech.net/unix/). Sous FreeBSD, i18ntools est dans /usr/ports/converters/i18ntools).

Plussoyez !

Les forums sont fermés.