IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Installation Oracle Discussion :

NLS et Ruby on Rails


Sujet :

Installation Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    j6m
    j6m est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Par défaut NLS et Ruby on Rails
    Bonjour,
    j'ai installé une base Oracle XE sous Windows pour tester ruby on rails avec les exemples d'Oracle.
    Après quelques galères avec le client, la variable TNS_ADMIN et autres alias de connexion, tout fonctionne correctement avec APEX sur le port 8080 si ce n'est les données :
    quand je les saisis dans l'appli web codée en ruby, et que je les affiche par le même moyen, pas de problèmes. En revanche, quand je les visualise depuis APEX ou par SQL*Plus j'ai les vilains caractères du genre ¢ et autres.
    Quand j'insére un "é" par SQL*Plus, c'est par l'appli web sous RoR que les caractères sont incohérents.
    Du coup j'ai un doute sur le paramétrage de la partie Oracle :

    database en AL32UTF8
    client SQL en WE8PC850 => NLS_LANG=FRENCH_FRANCE.WE8PC850. Cette variable est aussi initialisée dans use_ruby.cmd
    client Zindoz en WE8MSjesaisplusquoimaisje suis sûr que c'est le bon!

    sous l'appli Web ruby
    Title Text
    é ééééééé

    sous SQL*Plus :
    ID
    ----------
    TITLE
    ------------------

    TEXT
    ------------------

    68
    ├®
    ├®├®├®├®├®├®├®

    réciproquement j'insère une ligne avec des accents depuis SQL:
    ID
    ----------
    TITLE
    ------------------------

    TEXT
    ------------------------

    68
    ├®
    ├®├®├®├®├®├®├®

    81
    à
    ce à vient de sqlplus

    et là c'est dans mon appli ruby que ça ne va plus :
    é ééééééé Show Edit Destroy
    � ce � vient de sqlplus Show Edit Destro

    j'aurais tendance à penser que c'est ruby qui a tort mais je ne vois pas encore où le lui dire...


    il est possible que les jeux de caractères de la base et de son serveur Web, mais surtout de SQL*Plus, soient insuffisants pour afficher ce qui vient l'appli web RoR (la fonte). Mais quand même un e accentué ça devrait être à leur portée. D'ailleurs ces caractères existent bien dans SQLPlus (voir ci-dessus).

    Je suis un peu perdu et du coup j'ai des doutes sur mon install Oracle : quand je fais un "export csv" depuis APEX, j'ai les mêmes caractères ignobles.

    Pouvez-vous au moins me rassurer sur ce point? Ça me mettra du coeur à l'ouvrage pour la partie ruby...

  2. #2
    j6m
    j6m est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Par défaut les paramètres de langue de la base
    je me demande si ce n'est pas là qu'est le problème :
    FRENCH_FRANCE pour la base, ne faudrait-il pas mieux AMERICAN_AMERICA (toujours en UTF8, et en laissant les clients positionner leur langue s'il y a lieu) ?

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Les paramètres langage et territoire de NLS_LANG n'interviennent pas dans la conversion de caractères entre le client et le serveur.

    sqlplus.exe (mode caractère) ne fonctionne pas exactement comme sqlplusw.exe (mode graphique): il ne faut pas mettre le même paramètrage pour NLS_LANG.Voir le tutoriel NLS.

    Sous Windows, Oracle va cherche par défaut la valeur de NLS_LANG dans le registre mais on peut la redéfinir en tant que variable d'environnement avec:
    Cette valeur ne sera prise en compte que pour les exécutables démarrés depuis le processus qui a exécuté la commande DOS "set".

  4. #4
    j6m
    j6m est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Par défaut
    bonjour et merci de votre réponse ; sur la machine où tourne ruby, j'ai installé Oracle Client 10g Express Edition, je n'ai donc que sqlplus dos. Et je fais un "set NLS_LANG=FRENCH_FRANCE.WE8PC850" avant de lancer sqlplus, comme vous le conseillez. J'ai d'ailleurs consulté le tutoriel dont vous parlez, bien utile pour vérifier ma config.

    C'est aussi dans le fichier de paramétrage de ruby, dans environment.rb.
    Je pense que je vais essayer d'installer une autre base XE en AMERICAN_AMERICA, que ruby aura peut-être moins de difficultés à gérer.
    Y a t'il d'autres utilisateurs ruby / oracle?

    Je vous donnerai la suite des événements.
    Encore merci.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Je pense que je vais essayer d'installer une autre base XE en AMERICAN_AMERICA
    Ceci n'a pas vraiment de sens parce que le language et le territoire au niveau de la base ne sont que des paramètres dynamiques utilisés par défaut si le client ne définit pas NLS_LANG. Par contre, créer une nouvelle base avec un nouveau jeu de caractères a en général du sens car on ne le change pas facilement. Mais attention avec XE vous ne pouvez pas créer une nouvelle base sur la même machine où XE est déjà installé : il y a une limitation de 1 base par machine: avec XE, vous pouvez uniquement choisir le package d'installation qui impose le jeu de caractères de la base.

  6. #6
    j6m
    j6m est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Par défaut
    cette base est une ébauche de test donc pas de souci pour la supprimer.
    Pour le jeu de caractères, selon vous c'est donc le characterset qu'il faudrait changer par exemple en WE8MSWIN1252 ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/11/2006, 01h13
  2. Réponses: 2
    Dernier message: 06/06/2006, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo