En faisant ça
String prenom = new String(resultSet.getBytes("PRENOM_SALARIE"),"ISO-8859-1");
Au mieux tu recrée exactement la même chaine (si ton encodage par défaut est iso-8859-1), au pire tu crée délibérément une chaine corrompue dans l'espoir de faire l'opération inverse d'une corruption qui a déjà eu lieu , avec 90% de chances de faire pire.
Il faut faire les opération suivante:
1) s'assurer que les données ne sont pas déjà corrompue sur la première base de données. Selon la même bidouille que tu fais, ça peux être le cas même sans s'en rendre compte. (Ton interface graphique habituelle merdouille symétriquement et donc "corrige" les données corrompue à l'affichage). Le plus simple pour ce check est de prendre un chaine contenant, par exemple Ä ou Ü ou d'autres caractères n'existant pas en iso-8859-1, de l'y stocker avec l'interface habituelle, et de lancer une requete SQL qui compte les caractères ou qui convertis en caractères non accentués ou qui, pour chaque caractère de la chaine, affiche sa valeur unicode. Tu saura tout de suite si le SGBD vois bien ce que tu pense qu'il vois
2) comme dit, voir dans la config de ton driver si il parle bien le même encoding que la DB (souvent, c'est automatique, mais je ne connais pas SQL server)
3) voir si c'est pas au transfert vers la deuxième DB que tu aurais le problème inverse (Envoyer une chaine connue genre "Héhéhé höµhòhó" et regarder si ça arrive correctement)
4) voir si c'est pas à l'affichage final que tu as le problème.
Partager