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

Oracle Discussion :

[oracle9i] NVarchar2 UTF-8


Sujet :

Oracle

  1. #1
    ALJ
    ALJ est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut [oracle9i] NVarchar2 UTF-8
    Bonjour,

    On a une base en UTF-8 avec des colonnes de types VARCHAR2.

    On execute une requete de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO T_NOTE_NOT (PK_NOT, NOT_LIB_redacteur) VALUES ('1','éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé');
    On obtient une erreur oracle :
    ORA-01401: valeur insérée trop grande pour colonne (Il y a 100 caracteres et on a un varchar2(100))
    Si on saisit 100 caractères e, l'enregitrement passe.

    La seule solution que nous avons trouvé est de passer les champs de Varchar2 à NVarchar2.
    Dans ce cas l'enregistrement est correct.

    Cependant cela nous obilige à passer tous les champs varchar2 en NVarchar2.

    Est ce que vous connaissez d'autres solutions ou est ce l'unique solution ?

    De plus j'ai lu qu'il y avait des pbs avec nvarchar2 et le driver oracle :
    http://www.mularien.com/blog/2007/12...le-and-tomcat/

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Vous avez du créer votre table en VARCHAR2(100 BYTE) au lieu de VARCHAR2(100 CHAR).

    Regardez dans all_tab_columns.

  3. #3
    ALJ
    ALJ est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous avez du créer votre table en VARCHAR2(100 BYTE) au lieu de VARCHAR2(100 CHAR).

    Regardez dans all_tab_columns.
    Effectivement quand je regarde cette table pour les varchar2, j'ai dans la colonne CHAR_USED = 'B' je pense pour byte.
    Par contre dans mon script SQL je n'ai rien spécifié. Est ce que le byte est la donnée par défaut d'oracle. Dans ce cas comment je peux lui spécifié de passer en CHAR ?

    Merci
    Cdt,
    ALJ

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820

  5. #5
    ALJ
    ALJ est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Ok merci ca repond exactement à ma question. Par contre si je met le champ NLS_LENGTH_SEMANTICS dans la table nls_database_parameters à CHAR au lieu de BYTE, est ce que je n'aurai aucun impact ?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Quand vous créerez un VARCHAR2(10) ce sera un VARCHAR2(10 CHAR).
    Où je travaille les bases sont ainsi configurées, nous n'avons pas rencontré de problème.

    Vous pouvez aussi générer un script pour modifier vos tables existantes à partir de all_tab_columns.

  7. #7
    ALJ
    ALJ est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    J'ai une autre question concernant ce problème. A priori ce serait un problème lié à UTF-8. Est ce que je n'aurai pas ce soucis avec une base en WE8ISO8859P1 ?

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ce n'est pas un problème en fait, c'est de la configuration en fonction du nombre d'octet utilisé pour coder un caractère.

    WE8ISO8859P1 étant effectivement codé sur un seul caractère, il n'y a pas lieu à s'intéresser à ce paramétrage.

  9. #9
    ALJ
    ALJ est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Ok Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle9i] modifier le character set d'une bd?
    Par osmoze dans le forum Oracle
    Réponses: 8
    Dernier message: 16/02/2005, 13h29
  2. [JBuilderX][Oracle9i]chargement d'un pilote
    Par Lina dans le forum JBuilder
    Réponses: 2
    Dernier message: 27/05/2004, 14h57
  3. Mozilla & UTF-8
    Par SergioF dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 11/05/2004, 14h00
  4. [WebForms] Encodage, UTF-8 et accents
    Par alexischmit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 28/04/2004, 12h21
  5. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40

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