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

Développement SQL Server Discussion :

Convertir une chaîne de caractères en UNICODE


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Convertir une chaîne de caractères en UNICODE
    Bonjour tout le monde !

    Je souhaiterai créer une fonction qui me permette de convertir une chaîne de caractères en Unicode.

    Pour cela je sais qu'il existe la fonction UNICODE() mais celle-ci ne convertit que le premier caractère de ma chaîne.

    Voici la fonction que je tente de réaliser :

    CREATE FUNCTION [dbo].[convertUnicode] (@chaine nvarchar(MAX))
    RETURNS varchar(MAX)
    AS
    BEGIN
    DECLARE @RETVAL VARCHAR(MAX)
    DECLARE @position INT
    SET @position = 1
    WHILE @position <= len(@chaine)
    BEGIN
    SET @RETVAL = @RETVAL+'&#'+CONVERT(nvarchar(70),UNICODE(SUBSTRING(@chaine, @position, 1)))+';'
    SET @position = @position + 1
    END
    RETURN @RETVAL

    END
    Je me suis inspirée pour cela de la fonction que j'ai trouvé sur le site de MSDN : http://msdn.microsoft.com/fr-fr/library/ms180059.aspx (Dans la partie B)

    Le problème de cette fonction est qu'elle ne me renvoit rien...

    Lorsque j'éxecute ce code :

    DECLARE @RETVAL VARCHAR(MAX)
    DECLARE @position int, @nstring nvarchar(MAX), @chaine NVARCHAR(MAX)
    SET @position = 1
    SET @nstring = N'موجز ما قبل السوق'
    WHILE @position <= len(@nstring) BEGIN
    SET @chaine = @chaine + '&#'+CONVERT(nvarchar(MAX),UNICODE(SUBSTRING(@nstring, @position, 1)))+';'
    SET @position = @position + 1

    END
    print @chaine
    Rien ne s'affiche...

    Par contre quand j'éxecute ce code :

    DECLARE @RETVAL VARCHAR(MAX)
    DECLARE @position int, @nstring nvarchar(MAX), @chaine NVARCHAR(MAX)
    SET @position = 1
    SET @nstring = N'موجز ما قبل السوق'
    WHILE @position <= len(@nstring) BEGIN
    SET @chaine = '&#'+CONVERT(nvarchar(MAX),UNICODE(SUBSTRING(@nstring, @position, 1)))+';'
    SET @position = @position + 1
    print @chaine
    END
    ça m'affiche ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    م
    و
    ج
    ز
     
    م
    ا
     
    ق
    ب
    ل
    En espérant trouver une solution.

    Cordialement

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 856
    Points : 52 993
    Points
    52 993
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST(maDonnée AS N[VAR]CHAR(???))
    A +

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST(maDonnée AS N[VAR]CHAR(???))
    A +
    Où est-ce que je peux mettre ce CAST dans ma fonction ?!

    Vu que mon paramètre est en NVARCHAR je ne vois pas pourquoi il faudrait encore le reconvertir ?

    Moi j'aimerais obtenir une chaîne de ce genre :
    Mon problème se situe dans ma fonction, au moment de la concaténation de @RETVAL. Et je ne vois pas pourquoi...

  4. #4
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Ne pas oublier le N'...' avant la chaine que vous définissez comme unicode...

    Voici un exemple, il vaudra sans doute mieux qu'un long discour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    declare @testOK nvarchar(10)
    declare @testNOK nvarchar(10)
     
    set @testOK = N'Ωblabalbal'
    set @testNOK = 'Ωblabalbal'
     
    print @testOK
    print @testNOK
    Dje



    Edit : Pas de bol, le forum prend pas l'unicode on dirait ^^

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    En fait j'ai trouvé la solution à mon problème, il suffisait d'initialiser ma variable @RETVAL avant le début de ma boucle WHILE...

    SET @RETVAL = ''

    Maintenant j'ai enfin ma chaîne convertit en UNICODE

    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/04/2008, 17h36
  2. Convertir une chaîne de caractère (saisie dans un textbox) en décimal
    Par sab_etudianteBTS dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/09/2007, 21h17
  3. Convertir une chaîne de caractères XML en Node
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/07/2007, 14h06
  4. Réponses: 4
    Dernier message: 22/12/2006, 15h10
  5. Convertir une chaîne de caractères
    Par PedroBD dans le forum Langage
    Réponses: 3
    Dernier message: 13/11/2006, 17h25

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