none
Problème conservation accents après requête insertcommand c# - mysql RRS feed

  • Question

  • Bonjour,

    J'ai un problème de conservation des accents des champs d'une base de donnée Sql obtenus après une requête insertcommand chargeant des données d'un contrôle GridView dans une page de code behind c#. Quel est la méthode pour conserver les accents après une requête ?

    Merci pour votre aide !

    Le type de caractère pour la solution Visual Studio C# - HTML est charset="UTF8".

    Le type de caractère pour la base de donnée MySQL est UTF8 - default collation.

    La ligne de code est la suivante :

                        SqlDataSourceTestPro12.InsertCommand =

    "INSERT INTO tp_panier (TP_panier_idtArticle, TP_panier_ArticleDesignation, TP_panier_ArticleFamille, TP_panier_ArticleUnite, TP_panier_ArticlePrix, TP_panier_SessMacAddress, TP_panier_SessCaption, TP_panier_SessIpaddress) VALUES (?idtArticle, ?ArtDesignation, ?ArtFamille, ?ArtUnite, round(convert(replace(?ArtPrix,',','.'),decimal(7,2)),2), ?sessionMacaddress, ?sessionCaption, ?sessionIpaddress)";

    jeudi 29 décembre 2016 18:50

Réponses

  • Bonjour,

    J'ai trouvé la solution. Dans la requête insert, je place les fonctions Replace pour les paramètres où les caractères spéciaux apparaissent.

    Nouvelle ligne de code :

                        SqlDataSourceTestPro12.InsertCommand = "INSERT INTO tp_panier (TP_panier_idtArticle, TP_panier_ArticleDesignation, TP_panier_ArticleFamille, TP_panier_ArticleUnite, TP_panier_ArticlePrix, TP_panier_SessMacAddress, TP_panier_SessCaption, TP_panier_SessIpaddress) VALUES (?idtArticle, REPLACE(REPLACE(REPLACE(?ArtDesignation,'ê','ê'),'é','é'),'è','è'), REPLACE(REPLACE(REPLACE(?ArtFamille,'ê','ê'),'é','é'),'è','è'), REPLACE(REPLACE(REPLACE(?ArtUnite,'ê','ê'),'é','é'),'è','è'), round(convert(replace(?ArtPrix,',','.'),decimal(7,2)),2), ?sessionMacaddress, ?sessionCaption, ?sessionIpaddress)";

    Cordialement,

    • Marqué comme réponse Rednuts72 jeudi 5 janvier 2017 13:09
    jeudi 5 janvier 2017 13:09

Toutes les réponses

  • Bonjour Rednuts72,

    Avez-vous spécifié un encodage dans la chaine de connexion ? Par exemple :

    Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=utf8;

    Mettez bien utf8 en minuscules et non en majuscules.

    Cordialement

    vendredi 30 décembre 2016 13:41
  • bonjour, merci pour votre réponse.

    J'ai essayé votre indication en mettant une propriété charset dans la chaine de connexion mais j'ai toujours le même problème d'ignorance des accents.

    Merci,

    Marc-Antoine

    samedi 31 décembre 2016 13:26
  • Bonjour

    Est ce que vous avez vérifier au niveau la base de donnée, que la donnée inséré de façon correcte ou pas ?


    Said WAHID :: Developpeur Senior .Net / AZURE

    mercredi 4 janvier 2017 21:35
  • La base de donnée est correct. J'utilise MySQL. le type de caractères est charset=utf8.

    Par ailleurs, les requêtes select fonctionnent normalement.

    mercredi 4 janvier 2017 22:58
  • Bonjour, est ce que les données avec accent ne peuvent pas être insérer ou il sont insérer mais sans accent? 
    jeudi 5 janvier 2017 12:23
  • Bonjour,

    J'ai trouvé la solution. Dans la requête insert, je place les fonctions Replace pour les paramètres où les caractères spéciaux apparaissent.

    Nouvelle ligne de code :

                        SqlDataSourceTestPro12.InsertCommand = "INSERT INTO tp_panier (TP_panier_idtArticle, TP_panier_ArticleDesignation, TP_panier_ArticleFamille, TP_panier_ArticleUnite, TP_panier_ArticlePrix, TP_panier_SessMacAddress, TP_panier_SessCaption, TP_panier_SessIpaddress) VALUES (?idtArticle, REPLACE(REPLACE(REPLACE(?ArtDesignation,'ê','ê'),'é','é'),'è','è'), REPLACE(REPLACE(REPLACE(?ArtFamille,'ê','ê'),'é','é'),'è','è'), REPLACE(REPLACE(REPLACE(?ArtUnite,'ê','ê'),'é','é'),'è','è'), round(convert(replace(?ArtPrix,',','.'),decimal(7,2)),2), ?sessionMacaddress, ?sessionCaption, ?sessionIpaddress)";

    Cordialement,

    • Marqué comme réponse Rednuts72 jeudi 5 janvier 2017 13:09
    jeudi 5 janvier 2017 13:09