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

C# Discussion :

[C#] Une enigme cafouillage unicode


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut [C#] Une enigme cafouillage unicode
    Voila il se passe de quoi de tres bizzare dans mon code. Je tente de créer une grosse String. Tout va bien juste qu'au moment ou si j'écris un "é" a chaque "é" écrit j'ai une lettre qui disparait à la fin de la string

    Quelqu'un a déja vu ca !?!?

    Parce que moi je n'y comprend rien !!!!

    Merci

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    du code svp

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Humm c'est qui en a quand même beaucoup

    on a commencé par ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    System.Text.StringBuilder file1 = new System.Text.StringBuilder( 100 ); 
    			file1.Append("\n\t<Cell ");
    			if( !styleName.Equals(""))file1.Append("ss:StyleID=\""+this.styleName+"\"");
    			if( !mergeAcross.Equals(""))
    			{
    				file1.Append(" ss:MergeAcross=\""+this.mergeAcross+"\"" );
    			}		
    			file1.Append("><Data ");
    			if( !dataType.Equals(""))file1.Append("ss:Type=\""+dataType+"\"");
    			file1.Append(">"+data+"</Data>\n\t</Cell>");
    			return file1.ToString();
    qui est appeler par ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public String render()
    		{
    			System.Text.StringBuilder file2 = new System.Text.StringBuilder( 10000 ); 
    			file2.Append("\n<Row>");
    			IEnumerator ienum = cellList.GetEnumerator();
    			while( ienum.MoveNext() )
    			{
    				XMLElementCell cell = ( XMLElementCell ) ienum.Current;
    				file2.Append(cell.render());
    			}
    			file2.Append("\n</Row>");
    			return file2.ToString();
    		}
    et qui est finalement appeler par ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    public String render(int nbLigne)
    		{
    			System.Text.StringBuilder file = new System.Text.StringBuilder(100000);
     
    			file.Append(this.headerFile());
    			file.Append("\n<Styles>");
    			IDictionaryEnumerator iStyleEnum = styleList.GetEnumerator();
    			while( iStyleEnum.MoveNext() )
    			{
    				XMLStyleElement style = ( XMLStyleElement ) iStyleEnum.Value;
    				file.Append(style.render());
    			}
    			file.Append("\n</Styles>");
    			IDictionaryEnumerator iDicEnum = worksheet.GetEnumerator();
    			while( iDicEnum.MoveNext() )
    			{
    				ArrayList rows = (ArrayList) iDicEnum.Value;
    				String name = (String) iDicEnum.Key;
    				file.Append("\n<Worksheet ss:Name=\""+name+"\">");
    				file.Append("\n<Table ss:ExpandedColumnCount=\""+this.numberCell+"\" ss:ExpandedRowCount=\""+nbLigne+"\" x:FullColumns=\"1\" x:FullRows=\"1\">");
    				IEnumerator ienum = rows.GetEnumerator();
    				while(ienum.MoveNext() )
    				{
    					XMLElementRow row =( XMLElementRow ) ienum.Current;
    					file.Append(row.render());
    				}
    				file.Append("\n</Table>");
    				file.Append("\n<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
    				file.Append("\n<Selected/>");
    				file.Append("\n</WorksheetOptions>");
    				file.Append("\n<PageBreaks xmlns=\"urn:schemas-microsoft-com:office:excel\">");
    				file.Append("\n<RowBreaks>");
    				IEnumerator iPageEnum = pageBreakList.GetEnumerator();
    				while( iPageEnum.MoveNext() )
    				{
    					int page = (int) iPageEnum.Current;
    					file.Append("\n<RowBreak>");
    					file.Append("\n<Row>"+page.ToString()+"</Row>");
    					file.Append("\n</RowBreak>");
    				}
    				file.Append("\n</RowBreaks>");
    				file.Append("\n</PageBreaks>");
    				file.Append("\n</Worksheet>");
    			}
    			file.Append("\n</Workbook>");
    			return file.ToString();
    		}

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Une remarque à ajouter que je viens de me rendre compte qui va peut-etre préciser le tir.( Le code n'a plus réellement de bon sens par contre ) c'est lorsque je post ma string avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CreerRapport oReport = new CreerRapport();
    			String rapport = oReport.genererRapportAvailabilityXML(DateTime.Parse(TextBox1.Text));
    			Response.Clear();
    			Response.AppendHeader("Content-Disposition", "attachment; filename=AvailabiliyReport.xls"); 
    			Response.AppendHeader("Content-Length", rapport.Length.ToString()); 
    			Response.ContentType = "application/xls"; 
    			Response.Write(rapport);
    			Response.End();
    que les caractères à la fin disparaise !

    Aidez moi !!!

  5. #5
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Hum ca sent le cafouillage unicode ca

    Ca ne marche pas non plus avec les autres caracteres accentues ?

    Le "é" doit etre tansforme en 2 chars dans l'en-tete car il ne peut y etre mis en tant que tel, ce qui fausse la taille ("Content-Length") et tronque la string

    (j'essaie depuis un petit moment trouver comment on peut compter les #!$% chars, je poste ca pour pas etre le seul a chercher)

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    0k je vais cherché dans la même direction que toi peut-etre que a deux on va trouver !

  7. #7
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Victoiiiiire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Response.AppendHeader("Content-Length", System.Text.Encoding.UTF8.GetByteCount(rapport).ToString());
    "a" donne 1 en taille
    "é" donne 2 en taille

    pfiou j'ai fait le tour de system.string et system.char et system.text, il y a des trucs sympas dedans

  8. #8
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Woaaaa ca marche

    Je crois que ca mérite un faq ca !!

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

Discussions similaires

  1. Migrer une base en unicode
    Par Papy214 dans le forum Administration
    Réponses: 3
    Dernier message: 25/01/2012, 14h52
  2. [ASE 15] Envoyer le resultat d'une requète en unicode par mail
    Par antho57 dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 25/03/2008, 12h21
  3. Transformer une String en Unicode
    Par annemarie dans le forum Delphi
    Réponses: 3
    Dernier message: 28/02/2007, 17h43
  4. ecriture unicode dans une mesagebox
    Par LRobi dans le forum C++
    Réponses: 1
    Dernier message: 23/02/2005, 17h23
  5. [Unicode] Internationalisation d'une application
    Par Thierry Laborde dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2003, 20h15

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