Bonjour,
J’utilise une action sur un objet pour faire un import CSV, et le passer à un adaptateur spécifique, par contre j’ai un problème avec les caractère spéciaux (accents) à l’import vers simplicité.
Sachant que mon csv est bien en UTF-8, existe t’il un moyen de forcer la lecture du fichier en utf-8 ?
Sinon j’ai vu qu’on peux paramétrer la JVM, ou puis-je accéder à ces paramètres svp ?
merci d’avance
Nous importons en permanence des fichiers entrants encodés en UTF-8 et je vous assure que ça marche parfaitement
Donc :
soit votre fichier contient autre chose que de l’UTF-8 (c’est pas toujours facile à voir car ce que disent les éditeurs de texte est parfois trompeur notamment quand il y a un mélange entre plusieurs encodings dans le fichier) => envoyez le moi en message privé pour que je vérifie
soit vous avez démarré Simplicité explicitement avec un autre encoding JVM que UTF-8 ce qui est une très mauvaise idée car Simplicité n’est pas fait pour fonctionner sur autre chose qu’une JVM en UTF-8
PS: L’encoding de la JVM est affiché dans le /health:
Oui je confirme, le probléme vient de mes excel, ça ne sauvegarde pas en utf-8 et apparament c’est un probléme commun.
Une derniére question, est ce possible de forcer l’import à l’encodage ANSI ? Sinon si une mauvaise idée je passe sur des outils pour convertir à l’utf-8
Sinon il y a une classe utilitaire historique (et basique) pour faire des conversions d’encoding: EncodingTool (plus vraiment utilisé depuis la version 3.0)
Sinon il y a aussi la lib Apache commons “codecs”, cf. StringUtils (Apache Commons Codec 1.11 API) qui répond peut être aussi au besoin de conversion (je ne l’ai jamais utilisée)
Personnellement je convertit toujours les fichiers en UTF-8 à la source, avant de les faire traiter par Simplicité. Les histoires d’encoding sont une source inépuisables de problèmes frustrants.
Java sait surement convertir des encodings de base.
Par exemple, si votre fichier est de l’iso-8859-1 :
// ISO-8859-1
byte[] data = ... read file...
// Java Unicode
String s = new String(data, "ISO-8859-1");
// UTF-8
byte[] utf8 = s.getBytes("UTF-8");
Par défaut Simplicité fait des new String(data, "UTF-8") quand il charge des fichiers textuels (comme CSV), donc ce sera plus simple si votre source est en en UTF-8.
Quoiqu’il en soit il faudra maitriser l’encoding de vos fichiers sources, ou alors ajouter un champ dans votre action pour demander l’encoding de la source à votre utilisateur.