|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() |
Bonjour,
J'ai créé un schéma avec des tables dans ma base de données oracle 10g. J'insère des données dans ces tables dont certaines avec des caractères accentués (ex: amélioration). J'accède à ma BD avec une connexion odbc et lorsque je fait un select sur ma table, je perd l'accent et je me retrouve avec "amelioration". Quelqu'un peut-il m'aider? Je précise que si j'accède à ma base avec sql+ je perd également mes accents mais avec entreprise manager tout est correct. Merci |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : mai 2005 Messages : 134 ![]() |
Bonjour,
Tu dois avoir soit : - ta variable NLS_LANG diffère entre le client et la base. (le problème viendrait du client) - les paramètres NLS de la base ne sont pas compatibles avec les accents (le problème viendrait de la base) Vérifie de ce côté là. |
|
|
00
|
|
|
#3 | |||||
|
Membre régulier
![]() |
Citation:
Exemple de ma machine: Code :
Code :
Ce n'est donc pas au niveau de a base de données je pense mais peut-être bien sur le client mais je ne voit pas trop où? Merci |
|||||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Sous Unix, vérifiez la valeur de la variable d'environnement NLS_LANG.
Sous Windows, vérifiez la clé de registre NLS_LANG. Voir aussi le tutoriel NLS pour plus de détails. |
|
|
00
|
|
|
#5 | |
|
Membre régulier
![]() |
Citation:
Voici la valeur de mon NLS_LANG Code :
NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252
|
|
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
La valeur de NLS_LANG donnée: c'est sur le serveur ou sur le client ?
Quel est le jeu de caractère de la base: Code :
SELECT * FROM nls_database_parameters WHERE parameter LIKE '%SET%'; Code :
|
||
|
|
00
|
|
|
#7 | |||||||
|
Membre régulier
![]() |
Citation:
Voici le résultat de la 1ere requête: Code :
Code :
Quel serait la cause de ce phénomène? Merci |
|||||||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Si la partie jeu de caractères de NLS_LANG correspond au jeu de caractères de la base (ce qui est votre cas), Oracle ne vérifie pas forcément la validité des caractères envoyés par le client et stockés dans la base. Vous avez probablement un client Oracle (un programme qui se connecte à la base) qui insére des données accentuées de façon incorrecte.
|
|
|
00
|
|
|
#9 | |
|
Membre régulier
![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Vous perdez des accents ... et moi j'y perds mon latin car selon vos messages, il y a des cas qui marchent avec SQL*Plus et d'autres qui ne marchent pas
Pouvez-vous préciser pour chaque test:
|
|
|
00
|
|
|
#11 | |
|
Membre régulier
![]() |
Citation:
Bon je vais répondre à vos questions. 1. Système utilisé: Serveur: windows2003 serveur Client 1 (ca marche): Windows XP Pro Client 2 (perte des accents): Windows 2003 serveur 2. NLS_LANG: Serveur:AMERICAN_AMERICA.WE8MSWIN1252 Client 1 (ca marche): FRENCH_FRANCE.WE8MSWIN1252 Client 2 (perte des accents): AMERICAN_AMERICA.WE8MSWIN1252 3. Clients utilisés: Sql+ en mode caractère sur les 2 clients toad pour insérer mes données dans les tables. 4. Cela fonctionne sous le client 1 mais pas sous le client 2. Etant donné que le client 2 est mon serveur de production, je ne retrouve pas mes accents dans mes applications. Voilà j'espère avoir été assez clair. Merci d'avance |
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Est-ce que vous parlez bien des données dans la base ou des messages de SQL*Plus ? Est-ce que vous avez vérifié dans les 2 cas comment sont stockés les caractères accentués dans la base avec la fonction SQL DUMP ?
|
|
|
00
|
|
|
#13 | |
|
Membre régulier
![]() |
Citation:
Oui j'ai fait le sql dump dans les 2 cas et le résultat est le même que dans un de mes posts précédent |
|
|
|
00
|
|
|
#14 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
C'est peut-être qui est mal configuré
Essayez de rentrer les données avec sqlplus.exe démarré depuis cmd.exe en positionnant d'abord dans la fenêtre DOS NLS_LANG à |
|
|
00
|
|
|
#15 | ||||
|
Membre régulier
![]() |
Je vient d'insérer une ligne en ligne de commande (sans toad) comme ceci:
Code :
Code :
|
||||
|
|
00
|
|
|
#16 | |||||||
|
Membre régulier
![]() |
Citation:
Code :
Je commence vraiment à m'embrouiller les pinceaux.... grrrr
|
|||||||
|
|
00
|
|
|
#17 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Si vous être vraiment sûr de la variable d'environnement NLS_LANG et du jeu de caractères de la base, je n'ai plus d'explication à vous proposer ...
![]() Vous pouvez aussi essayer de poster votre message en anglais sur le forum OTN dédié à ces problèmes. |
|
|
00
|
|
|
#18 | |
|
Membre régulier
![]() |
Citation:
Merci de t'être intéressé à mon cas...
|
|
|
|
00
|
|
|
#19 | |
|
Membre régulier
![]() |
Citation:
Dans mes tables, lorsque j'encode des données il faut que je mette le code HTML des caractères accentués et cela marche. Afin de m'éviter ce problème n'existe pas un outil pour le contourner et lorque j'encode "é", il insère automatiquement le code html du caractère? Ou alors au niveau de la configuration oracle, y a-t-il un paramètre à configurer pour qu'il interprète correctement mes caractères? Merci d'avance |
|
|
|
00
|
|
|
#20 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Au niveau du client Oracle, le seul paramètre qui compte en général est NLS_LANG. Dans le cas d'une application web, il faut être sûr que le serveur web (qui est ici le client Oracle) a la bonne valeur pour NLS_LANG au démarrage du serveur web (après, c'est trop tard).
Exception: JDBC ne prend pas en compte NLS_LANG. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com