Alfresco et les accents, UTF-8 mon amour

Alfresco est un outil de GED libre (FLOSS, logiciel libre) formidable, pour peu qu’il soit déployé correctement.

pub-BeerIl suffit de peu de chose pour être frustré: nominalement tout roule, et pis quand on en vient à faire des choses sérieuses un peu aux limites avec des données « de production »: ça coince!
Souvent c’est la faute des caractères accentués chelous, dans le contenu ou carrément dans le nom de fichier,  voire le nommage de répertoire (a.k.a. « espace Alfresco ») qui fiche la pagaille.
Ajoutez à ça la volonté de s’intégrer à des systèmes externes et de placer des passerelles SMB/CIFS ou pire CMIS, c’est le carton assuré.

2014-09-04 16.37.09
Admin-sys superbe

Tout ça parce que votre admin-sys préféré n’a pas jugé utile de placer/vérifier la cohérence sur l’encodage des caractères.
« Wai, fallait le deviner!! », dit-il du haut de sa superbe, avec son écharpe de câbles RJ45 autour du cou…
Mais c’est tellement évident une fois qu’on le dit: « UTF-8 te sauvera la vie ».

Le placer sur toute la chaîne:

  • encodage de la base de données MySQL ou PostgreSQL: ça doit être UTF-8
  • le système d’exploitation: la « locale », les variables d’environnement!
  • le Java et Tomcat aussi, sur les variables d’environnement et le mode d’encodage des fichiers
  • et tout le reste: logiciels satellites (LibreOffice, etc.), front-end HTTP/S, portail Drupal/ce-que-vous-voulez

Mésaventure avec Alfresco

Ca n’arrive pas qu’aux autres. Récemment encore, je me suis retrouvé dans l’impossibilité d’enregistrer des fichiers non UTF-8. Message sibyllin dans les traces :  « Found 1 integrity violations: Invalid property value« .

Tout ça dû à une variable d’environnement mal positionnée (variable LANG, ou LC_ALL). Cela a été réglé facilement en modifiant le script d’init (j’aurais pu le faire en redéfinissant les « locale » système):

/etc/init.d/alfresco , ou plus simplement /opt/alfresco-X.Y.z/alfresco.sh

LANG=fr_FR.UTF-8
LANGUAGE=fr_FR
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=fr_FR.UTF-8

Il suffit de redémarrer Alfresco pour constater que votre vie vient de changer (ou presque).

Outil génial pour s’en assurer, utiliser la Console Javascript (je ne comprends toujours pas pourquoi elle n’est pas packagée -de base-), créée et maintenue par Florian Maul sur https://github.com/share-extras/js-console , et y saisir :

var environnement = java.lang.System.getenv();
for (var clef in environnement) {
 logger.log(clef + "=" + environnement[clef]);
}

L’exécution permet de constater que tout est dans l’ordre.

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.