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 :

Problème de CHARACTERS SET


Sujet :

Oracle

  1. #1
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut Problème de CHARACTERS SET
    Bonjour
    j'ai créé une instance 9i (sous windows 2000),avec le CHARACTERSET WE8ISO8859P1... or il aurait fallu la créer en WE8ISO885P15, pour acceptation le caractère 'Euro'.
    Classique me direz-vous pour un presque néophyte, mais maintenant je dois modifier tout ça...
    Faut-il dropper l'instance et la recrreer avec WE8ISO885P15 ?
    Y-a-til une autre solution ?
    J'arrive pas bien à comprendre la différence entre :
    NLS_CHARACTERSET et NCHAR_CHARACTERSET... pouvez-vous me l'expliquer ?

    Merci d'avance pour vos contributions...

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Tout d'abord, il est possible de modifier le character set de la base mais il est plus simple de la recréer.
    Si vous préférez tout de même modifier la base : http://download-west.oracle.com/docs...1.htm#NLSPG011
    [edit]
    Comme on pouvait s'y attendre, le sujet à déjà été traité : http://www.developpez.net/forums/viewtopic.php?t=295577
    [/edit]

    Sinon, au lieu du WE8ISO8859P15, je vous conseille d'utiliser le MSWIN1252 (il est plus complet que le P15, ISO, 8bits et pas limité aux plateformes MS, ...)

    Pour finir, le character set s'applique aux VARCHAR (pour schématiser).
    Le National character set s'applique lui aux NVARCHAR2 et CLOB.

  3. #3
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Merci pour votre réponse, mais elle appelle une autre question...
    Pourquoi préconiser de recreer la database, alors qu'un simple ALTER DATABASE CHARACTER SET WE8MSWIN1252, est suffisant ?
    Je n'ai pas bien compris, après avoir potassé métalink, la différence entre, par exemple, WE8MSWIN1252 et UTF8...
    Que l'on puisse alterer WE8ISO8859P1 en WE8ISO8859P15, je le comprends, mais métalink semble aussi dire que l'on peut alterer WE8ISO8859P1 par UTF8...

    J'comprends plus rien !

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    l'UTF8 est un jeu unicode et consomme plus d'espace puisque codé sur 8 au lieu de 7 bits. C'est obligatoire pour une base internationale qui utilise les caractères latins, russes ou chinois

  5. #5
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par Fred_D
    l'UTF8 est un jeu unicode et consomme plus d'espace puisque codé sur 8 au lieu de 7 bits. C'est obligatoire pour une base internationale qui utilise les caractères latins, russes ou chinois
    négatif !
    L'unicode est codé sur plusieurs octets, à la différence des jeux de caractères ISO codés sur 1 octet ! ;-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT convert('€', 'UTF8',          'WE8ISO8859P15') AS UTF,
           DUMP(convert('€', 'UTF8',          'WE8ISO8859P15')) AS Dump_Utf,
           RawToHex(convert('€', 'UTF8',          'WE8ISO8859P15')) AS RAW_Utf
      FROM DUAL;
    ⿬ Typ=1 Len=3: 226,130,172 E282AC
    le WE8ISO8859P1(5) est lui codé sur 8bits (<=> 1 octet) : Western European 8bits ISO ...
    Les jeux purement anglais sont eux en 7bits

    [edit]Précisions sur l'Unicode
    L'unicode est de taille variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT convert('a', 'UTF8',          'WE8ISO8859P15') AS UTF,
           DUMP(convert('a', 'UTF8',          'WE8ISO8859P15')) AS Dump_Utf,
           RawToHex(convert('a', 'UTF8',          'WE8ISO8859P15')) AS RAW_Utf
      FROM DUAL;
    a Typ=1 Len=1: 97 61
    Ainsi, les 128 premiers caractères (soit grosso-modo ceux qui sont dans l'ASCII7) ne prennent que 1 octet.
    Mais le premier bit est réservé pour indiquer la présence ou non d'un bit suivant.
    [/edit]

  6. #6
    Membre habitué
    Homme Profil pro
    CMA-CGM
    Inscrit en
    Novembre 2005
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : CMA-CGM
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2005
    Messages : 531
    Points : 137
    Points
    137
    Par défaut
    Désolé les gars... j'ai rien compris...

    J'ai néanmoins 3 questions précises:

    1°) Puis-je par un simple ALTER DATABASE CHARACTER SET WE8MSWIN1252, modifier le character set de ma base ?

    2°) Faut-il aussi ensuite, re-importer mes données dans cette base new look ?

    3°) Pourquoi préconiser de recreer la database, alors qu'un simple ALTER DATABASE CHARACTER SET WE8MSWIN1252, est suffisant ?

    Merci pour vos réponses...

  7. #7
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    1) Oui et non, ça dépend du CS de départ et d'arrivée
    2) Non, si vous migrer, les données sont déjà présentes (sauf si vous migrez une base vide...)
    3) Parce que ce n'est pas une opération négligeable et qui peut avoir de lourdes conséquences. il vaut mieux avoir une possibilité de retour-arrière importante et immédiate.

    Par exemple, si vous allez vers de l'UTF, attention, VARCHAR2(30) signifiera par défaut VARCHAR2(30 octets) et des chaines de 30 caractères pourraient ne pas rentrer et déclencer une exception !

Discussions similaires

  1. [ 11.2.0.3 ] Problème de character set ?
    Par ApprentiOracle dans le forum Administration
    Réponses: 0
    Dernier message: 18/12/2014, 13h27
  2. Problème de Character Set après UPGRADE
    Par agdid04 dans le forum Administration
    Réponses: 1
    Dernier message: 19/06/2012, 16h07
  3. problème de character set
    Par anouarm dans le forum Installation
    Réponses: 26
    Dernier message: 22/07/2010, 21h43
  4. Réponses: 17
    Dernier message: 07/10/2004, 18h05
  5. Problème avec accents et CHARACTER SET ISO8859_1
    Par kinda dans le forum InterBase
    Réponses: 13
    Dernier message: 30/10/2003, 15h49

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