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

MS SQL Server Discussion :

[SQL Server 2000] Convertir base ou table en utf-8


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [SQL Server 2000] Convertir base ou table en utf-8
    Bonjour,

    Je souhaite passer mon site en utf-8.
    Pour cela, il faut que je convertisse ma base de données SQL Server 2000 en utf-8. Je ne sais absolument pas comment faire et surtout si c'est faisable.

    Mon but pouvoir gérer des caractères japonais par exemple et par la suite pouvoir faire un tri, donc j'ai besoin qu'ils soient enregistrés dans la base dans le bon encodage.

    J'espère avoir été assez claire dans mon problème et vous remercie par avance.

    lnhf

    NB : j'ai déjà posté ce type de sujet ... mais je m'étais trompée de version de SQL Server.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Points : 90
    Points
    90
    Par défaut
    il suffit que tes champs soient du type : nvarchar, nchar ou ntext (type qui sont en double octets) au lieu de varchar, char et text (qui sont gérés en simple octet). Puis tu préfixes tes chaines de caractère par N.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into maTable (machaine) values (N'mon texte')

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Tout d'abord, merci pour ta réponse.
    Le fait de mettre le N devant la chaine de caractères permet de prendre en compte le fait que c'est de l'utf8 ?

    Je vais abuser de ton aide, mais après avoir testé (c'est dingue, c'est tout beau), mais j'aimerais ajouter une chaine dans une procédure stockée, ce qui ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DECLARE @machaine1 AS nvarchar(300)
    DECLARE @machaine AS nvarchar(300)
    SET @machaine1 = 'machaine'
    SET @machaine = N@machaine1
    insert into matable (macolonne) values (@machaine)
    Bien sur, ça ne passe pas, mais je ne vois pas comment écrire ou insérer le N devant la chaine de caractères ?

    Merci beaucoup pour ton aide.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Points : 90
    Points
    90
    Par défaut
    pour les précisions je te renvoie vers ce lien :
    http://msdn.microsoft.com/library/de...server2000.asp

    et pour l'écriture de ta proc essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DECLARE @machaine AS nvarchar(300)
    SET @machaine = 'machaine'
     
    exec ('insert into matable (macolonne) values (N''' + @machaine + ''')')

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut MERCI
    Bonjour,

    Merci pour ces details.

    Encore une question concernant le UTF-8, est-ce que quelqu'un l'a dejà utilisé ?
    En fait, je travaille sur le développements d'un site ASP - VB - SQL Server. Je passe ce site en UTF-8 (il est actuellement en ISO).

    J'ai donc des soucis de conversions en UTF-8 lorsque je récupère les données déjà insérées dans mes tables. Tous les caractères accentués ressortent sous forme de carré, alors que dans mon analyseur de requête, je n'ai pas ce souci.
    Faut-il que je spécifie quelque chose lors de mon SELECT ? Je n'ai pour le moment rien changer dans mes procédures de récupérations de données.


    Il n'y a vraiment pas moyen de convertir complètement ma base ou mes tables en UTF-8 ?
    MySQL (gratuit) le fait et pas MSSQL Server, c'est étrange.

    Merci pour vos réponses.

    lnhf

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci IG_Snoop,

    Mais le code ne fonctionne pas :
    en fait j'ai une procédure stockée, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE PROCEDURE addSource(@name nvarchar(512)) 
    AS
    exec ( 'INSERT INTO source (name)   VALUES ( N'''+ @name + ''')')
    GO
    et quand j'appelle cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DECLARE @name NVARCHAR(512)
    SET @name = 'وقع'
    {call addSource(@name) }
    Le résultat donne des ???

    j'ai fait plusieurs modifications dans l'appel de N @name ... mais rien n'y fait, si je ne fais pas explicitement le N'machaine', ça n'enregistre pas correctement.

    Quelqu'un saurait où est mon erreur ?

    Merci d'avance
    lnhf

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Points : 90
    Points
    90
    Par défaut
    essaye ça ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @name NVARCHAR(512)
    SET @name = N'وقع'
    {call addSource(@name) }

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci IG_Snoop,

    L'utilisation de procédures stockées (donc sans chaine en dur) n'est pas possible (si je comprend bien) ...

    Je te remercie beauocup pour ton aide.

    lnhf

  9. #9
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par lnhf
    L'utilisation de procédures stockées (donc sans chaine en dur) n'est pas possible (si je comprend bien) ...
    Je n'est pas bien compris si vous pouvez m'éclaircir.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par Inhf
    L'utilisation de procédures stockées (donc sans chaine en dur) n'est pas possible (si je comprend bien) ...
    Si c'est tout à fait possible. Quant tu fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DECLARE @name NVARCHAR(512)
    SET @name = N'وقع'
    la valeur stockée dans @Name est وقع et non N'وقع'
    Tu indiques juste par le N que tu stockes dans @name une valeur "Unicode". Ce qui fait que ta chaîne est correctement interprétée et que tu ne te retrouve pas avec des ???.

    Après dans ta proc stockée tu doit toujours faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ( 'INSERT INTO source (name) VALUES ( N'''+ @name + ''')')
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ( 'INSERT INTO source (name) VALUES (@name)')
    puisque je le rappèle ce n'est pas N'وقع' qui est stocké dans ta variable.

    Citation Envoyé par WOLO Laurent
    Je n'est pas bien compris si vous pouvez m'éclaircir.
    j'espère avoir apporté les précisions necessaires ... sinon n'hésitez pas

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 23
    Points : 32
    Points
    32
    Par défaut Convertir données SQL Server en UTF-8

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

Discussions similaires

  1. [SQL SERVER 2000] listing d'une table
    Par dsr57 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/03/2008, 17h51
  2. [SQL SERVER 2000] Comment créer une table "liée" ?
    Par aloisio11 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/01/2008, 15h43
  3. [MS SQL Server 2000] convertir le résultat de requête en fichier texte
    Par Abydos Business Group dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/03/2007, 21h32
  4. Réponses: 3
    Dernier message: 28/08/2006, 16h14
  5. [SQL server 2000] jointures de 3 tables
    Par batosai dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/04/2006, 09h45

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