document csv contenant caractères accentués

1
0
-1

Bonjour,

je cherche à charger le contenu d'un fichier csv dans une variable métier (vmParamsTrt).

Pour ce faire, je charge d'abord le fichier dans un document (listeParams), puis dans une tâche automatique, je crée une opération qui alimente la variable métier vmParamsTrt à partir du script suivant :

import com.company.test.ParamsTrt;

def docId = apiAccessor.getProcessAPI().getLastDocument(processInstanceId, "listeParams").getId();
byte[] docContenuByte = apiAccessor.getProcessAPI().getDocumentContent(docId.toString());

String docContenuString = new String(docContenuByte);
/*byte[] docCibleByte = docContenuString.getBytes("ISO-8859-1");*/
byte[] docCibleByte = docContenuString.getBytes("UTF-8");
String docCibleString = new String(docCibleByte);

String[] fichierLigne = docCibleString.split("\r\n");
/*def nblignes = paramsLigne.length;*/

def paramsListe = [];

fichierLigne.each{
paramsListe.add({ currentFichierLigne ->
def paramsLigne = new com.company.test.ParamsTrt()
String[] col = currentFichierLigne.split(";");
paramsLigne.par1= col[0]
paramsLigne.par2= col[1]
paramsLigne.par3= col[2]
paramsLigne.par4= col[3]
paramsLigne.par5= col[4]
return paramsLigne
}(it))
}
paramsListe.remove(0);
return paramsListe

Le problème est que l'une des valeurs contenue dans le fichier contient un caractère accentué (il s'agit du mot "Année").
Dans la variable Métier, je récupère " Ann�e".

J'ai essayé d'appliquer une conversion en UTF-8 avec l'instruction getBytes("UTF-8"), comme le montre le script ci-dessus, mais ça ne change rien.

J'ai essyé également getBytes("ISO-8859-1"), et là je récupère "Ann?e"

Une idée de comment je dois faire pour récupérer correctement les caractères accentués ?

D'avance, merci,

Thierry.

1 answer

1
0
-1

Hello,

Le probleme vient t-il de la lecture du CSV, ou de son exploitation par la suite ? Ca serait interressant ainsi de logger

Logger logger = Logger.getInfo("org;bonitasoft.scriptCSV");

logger.info("Ligne=["+currentFichierLigne+"]");

logger.info("Parameter=["+col[2+"]");

En effet, il se peut que le probleme soit dans l'écriture. Sinon, comment est stocké le fichier CSV ? Il est chargé depuis un formulaire avec un FileUpload? Normalement, il ne devrait pas avoir de surprise de ce coté la (le parametre -Ffile.encoding=UTF8 est bien présent sur la ligne de commande du serveur n'est ce pas?)

Cordialement

Notifications