|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Membre expérimenté
![]() Dev ASP.NET/jQuery ; Admin ORACLE Inscription : septembre 2007 Messages : 418 ![]() |
Bonjour,
Voici mon problème : Nous exportont un schema d'un base 8i vers une 9i. L'export et l'import se passent sans problèmes (pas d'erreurs, ni d'avertissements). Sauf que les lettres avec accent ne sont pas importées dans la 9i. A la place on y trouve soit des ? inversés, soit d'autres signes. Ceci en fonction du nls_lang utilisé par le client. Mais jamais les accents ne sont affichés. J'ai essayé de jouer avec la variable d'environnement NLS_LANG au moment de l'export et de l'import. Mais rien n'y fait. Impossible de récupérer les accents. Voici quelques infos : BDD source 8i : * nls_database_parameters : Code :
Code :
* nls_database_parameters : Code :
Code :
L'export et l'import se font par batch dans une console cmd. Pour l'instant je sèche complètement. |
||||||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Il faut nous donner les 2 valeurs de NLS_LANG:
Essayez de comparer sur les bases 8i et 9i le contenu d'une colonne concernée qui contient un 'é' avec la fonction DUMP SQL: Code :
SELECT dump(<colonne>, 1017) FROM <table>; Voir aussi le tutoriel NLS. |
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() Dev ASP.NET/jQuery ; Admin ORACLE Inscription : septembre 2007 Messages : 418 ![]() |
La valeur de NLS_LANG pour que l'affichage soit correct en console est : FRENCH.FRANCE.WE8ISO8859P1.
Les dump sur les 'é' et 'è' sont identique pour les deux BDD, a savoir : é = 82 è = 8a L'encodage sur la 8i est correcte : Code :
Typ=1 Len=13 CharacterSet=WE8ISO8859P1: E,n,v,o,i, ,r,82,p,o,n,s,e Code :
Typ=1 Len=13 CharacterSet=WE8MSWIN1252: E,n,v,o,i, ,r,bf,p,o,n,s,e |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : septembre 2004 Messages : 2 942 ![]() |
pouvez-vous nous donner les premières lignes des logs d'export et d'import ?
|
|
|
00
|
|
|
#5 | ||||
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Dans les 2 jeux de caractères, 'é' et 'è' ont la même représentation binaire d'après les tables 8859-1 et Windows-1252. J'ai également vérifié avec deux bases en 10.2 chacune ayant le bon jeu de caractères::
Code :
Code :
|
||||
|
|
00
|
|
|
#6 | ||||
|
Membre expérimenté
![]() Dev ASP.NET/jQuery ; Admin ORACLE Inscription : septembre 2007 Messages : 418 ![]() |
Voici :
Export fait avec NLS_LANG=FRENCH_FRANCE.WE8ISO8859P1 (NLS_LANG qui me permet d'avoir les accent lors d'une requête par sqlplus). Code :
Code :
|
||||
|
|
00
|
|
|
#7 |
|
Membre expérimenté
![]() Dev ASP.NET/jQuery ; Admin ORACLE Inscription : septembre 2007 Messages : 418 ![]() |
J'ai l'explication :
Dans la table source, les données sont codées en WE8PC850. Lors d'une requête avec un NLS_LANG=NLS_LANG=FRENCH_FRANCE.WE8ISO8859P1 (characterset correspondant a celui de la BDD), l'affichage est correct puisqu'aucune conversion n'est faite. Lors de l'export, Oracle pense que les données sont en WE8ISO8859P1, ne fait pas de conversion. Le fichier dump contient donc des donnée codées en WE8PC850. Lors de l'import, Oracle reconnait le fichier comme ayant été exporté en WE8ISO8859P1 et fait la conversion vers WE8MSWIN1252. La solution : Exporter les données avec nls à WE8ISO8859P1. Modifier le fichier dmp pour qu'Oracle le reconnaisse comme ayant était créé en WE8PC850 (2 octets à modifier). J'ai testé, ça marche
|
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Citation:
Modifier directement un fichier export qui utilise un format binaire (même si on peut afficher certaines parties en ASCII) n'est pas du tout supporté par Oracle. |
|
|
|
00
|
|
|
#9 | ||
|
Membre expérimenté
![]() Dev ASP.NET/jQuery ; Admin ORACLE Inscription : septembre 2007 Messages : 418 ![]() |
Citation:
Citation:
Et cela fonctionne très bien. |
||
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Ce qui est contradictoire c'est ça:
Citation:
Citation:
Citation:
|
|||
|
|
00
|
|
|
#11 |
|
Membre expérimenté
![]() Dev ASP.NET/jQuery ; Admin ORACLE Inscription : septembre 2007 Messages : 418 ![]() |
Le progiciel doit envoyer les datas en WE8CP850 au serveur et ce dernier pense les recevoir en WE8ISO8859P1.
Ce qui se vérifie avec Code :
Typ=1 Len=13 CharacterSet=WE8ISO8859P1: E,n,v,o,i, ,r,82,p,o,n,s,e |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com