Bonjour à tous.

J'ai un soucis d'encodage lorsque je veux extraire un fichier en csv. J'arrive à l'extraire en encodage ANSI mais j'ai une contrainte prestataire qui le souhaite en UTF8.
C'est une extraction qui doit être quotidienne, donc automatisé.

Pour faire l'extraction, j'utilise sqlplus avec le script suivant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
set echo off;
set feed off;
set verify off;
set heading off;
set embedded on;
set newpage none;
set linesize 100;
set pagesize 10000;
 
alter session set NLS_LANG=FRENCH_FRANCE.UTF8
 
spool 'C:\Export\BaO\fic.csv';
 
select 'CODECLIENT;CODETITRECLIENT;NOM' 
from dual;
 
select c.CODECLIENT || ';' || c.CODETITRECLIENT || ';' || c.NOM
from clients c
where c.datecreation >= (select to_date(INI_VAL, 'DD/MM/YYYY')
						from DCENTER.DCENTER_BAO_INI
						where INI_APPLI = 'BAO_DISTRI2CABESTAN'
						and INI_PARAM = 'DATE_LAST_EXPORT')
union
select c.CODECLIENT || ';' || c.CODETITRECLIENT || ';' || c.NOM
from clients c
where c.datemodification >= (select to_date(INI_VAL, 'DD/MM/YYYY')
                            from DCENTER.DCENTER_BAO_INI
							where INI_APPLI = 'BAO_DISTRI2CABESTAN'
							and INI_PARAM = 'DATE_LAST_EXPORT')
and c.datecreation < (select to_date(INI_VAL, 'DD/MM/YYYY')
						from DCENTER.DCENTER_BAO_INI
						where INI_APPLI = 'BAO_DISTRI2CABESTAN'
						and INI_PARAM = 'DATE_LAST_EXPORT');
 
spool off;
set feed on;
set pagesize 25;
set echo on;
Les champs CODECLIENT et CODETITRECLIENT sont des number, le champ NOM est un varchar.
Si je fait la même extraction sans le champ NOM, je n'ai aucun problème l'encodage est bon, mais dès que je lui met le champ NOM il ne modifie pas l'encodage.

J'ai testé manuellement dans une fenêtre de commande en faisant ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
set NLS_LANG = FRENCH_FRANCE.UTF8
sqlplus storeland/storeland@STOR-ORCL @C:\Export\BaO\export.sql
là, mon fichier avait le bon encodage, mais si je met les mêmes infos dans un .bat, j'ai toujours mon problème d'encodage.

A noter l'encodage de ma base est celui ci: FRENCH_FRANCE.WE8MSWIN1252

J'ai chercher sur le web, mais j'ai pas trouver de solution à mon problème.
Peut être que je loupe un truc sur mon.bat ou dans mon script.

Merci pour votre aide