Resultat Requetes MYSQL sur Base Oracle

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Resultat Requetes MYSQL sur Base Oracle

Message par Atlante »

Hello all,

Quelqu'un serait comment résoudre ce problème :
Je reçois après un DatabaseQuery(0, Sql$)
Pas d'acc¿s ¿


alors que cela devrait être :
Pas d'accès à
En gros les accents ne passent pas.
En unicode même problème.

merci,

Atlante
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Caractères après requetes MYSQL sur Base Oracle

Message par falsam »

je viens de provoquer une erreur volontaire d’authentification et effectivement les accents ne sont pas reconnus dans le message d'erreur retourné par DatabaseError()
FATAL: authentification par mot de passe ?chou?e pour l'utilisateur postgres
J'essaye de trouver une solution.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Resultat Requetes MYSQL sur Base Oracle

Message par Atlante »

Merci :)
Je suis au taf sur une base de plusieurs giga où les requêtes ne revoient plus de 127 colonnes...
Enfin bref j'ai pas beaucoup de droit dessus sauf lire les données. Déjà c'est pas la base de prob mais une copie.
cdt,

Atlante
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Resultat Requetes MYSQL sur Base Oracle

Message par G-Rom »

Compilation en unicode ?
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Resultat Requetes MYSQL sur Base Oracle

Message par Atlante »

G-Rom a écrit :Compilation en unicode ?
Déjà testé, j'aurai dû le préciser sorry :)
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Resultat Requetes MYSQL sur Base Oracle

Message par Atlante »

Je pense qu'il nous manque une petite option du style :

Texte$ = GetDatabaseString(#BaseDeDonnees, Colonne, option)

Option : Une des valeurs suivant
#PB_Ascii : Jeu de caractére ASCII
#PB_UTF8 : jeu de caractére UTF-8
#PB_Unicode : Jeu de caractère Unicode
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Resultat Requetes MYSQL sur Base Oracle

Message par G-Rom »

le résultat vous l'afficher dans quoi ? debugger , console , gadget ?
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Resultat Requetes MYSQL sur Base Oracle

Message par Atlante »

Debug pour moi :)
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Resultat Requetes MYSQL sur Base Oracle

Message par G-Rom »

j'aurais préferé que tu me dises console ^^
sur linux , je crois que cette commande à justement 3 paramètres, mais pas documenté , je vérifierais quand je serais sur mon pc.
doudouvs
Messages : 244
Inscription : jeu. 07/mars/2013 19:02
Localisation : France Alsace / Espagne Girona

Re: Resultat Requetes MYSQL sur Base Oracle

Message par doudouvs »

sur une une base de données Oracle l'encodage est en WE8ISO8859P15 donc du ISO 8859-15 tu doit passer en UTF-8 pour oracle du AL32UTF8.

Code : Tout sélectionner

export NLS_LANG=FRENCH_FRANCE.UTF8
Normalement tu devrais pouvoir coter client utiliser "NLS_LANG"

tu peux verifier le jeu de caractere avec la requête :

Code : Tout sélectionner

select value from nls_database_parameters where parameter='NLS_CHARACTERSET'
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: Resultat Requetes MYSQL sur Base Oracle

Message par Atlante »

Hello,

Merci pour tes informations je vais tester au boulot lundi.
En attendant j'ai trouvé un article intéressant là dessus :
http://ahmedaangour.blogspot.fr/2010/08 ... ns-de.html
NLS_LANG et problèmes de conversions de données
Qui ne s'est jamais retrouvé avec des caractères invalides insérées dans sa base alors qu'il ne voulait qu'insérer du texte en français?

Ces problèmes d'affichage ou d'insertion sont dûs à une mauvaise définition de la variable d'environnement NLS_LANG côté client. Cette variable indique en fait à Oracle quel est le système d'encodage des caractères utilisé par le client.

Ce qu'il faut savoir tout d'abord c'est que lorsqu'une base et un client utilisent un jeu de caractères différent, la couche Oracle NET effectue une conversion implicite et transparente des données transmises entre les 2 systèmes d'encodage. Supposons par exemple que j'utilise un client Oracle sous windows en français avec un code page WE8MSWIN1252 et que ma base soit défini avec un characterset AL32UTF8, les données insérées seront donc converties en AL32UTF8 et les données de la base affichées côté client seront converties en WE8MSWIN1252.

Si la conversion se fait de manière automatique, comment se fait-il alors qu'on se retrouve parfois avec des caractères invalides?
Tout simplement parce que la variable NLS_LANG utilisé ne reflète pas le réel système d'encodage du client. Imaginons que dans mon exemple précédent le NLS_LANG ne soit pas défini avec le code page 1252 (WE8MSWIN1252 ) mais en AL32UTF8. Lorsque j'insère des données elles sont réellement encodées en code page 1252 mais Oracle considère que c'est du AL32UTF8 (c'est que dit la variable NLS_LANG) et donc Oarcle NET n'effectuera pas de conversion. Je me retrouve donc dans ma base avec des données encodées en WE8MSWIN1252 alors que le jeu de caractère de la base est AL32UTF8.

Ces problèmes de conversion se retrouvent souvent dans les environnements clients en Windows. En effet, Windows utilise 2 jeux de caractères différents: le code page 1252 pour la partie graphique et le code page 850 pour le mode texte (DOS).

Cela veut donc dire que selon qu'on utilise le mode texte ou le mode graphique la variable NLS_LANG doit être défini différemment. Par défaut cette variable est défini dans la base de registre (HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE) et défini avec la valeur FRENCH_FRANCE.WE8MSWIN1252, ce qui signifie que si on se connecte à une base via SQLPLUS sous DOS la conversion se fera avec le code page 1252 alors que mes données sont encodées avec le code page 850. Des données invalides seront insérées dans ma base.
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Répondre