2010-11-30 3 views
4

J'utilise le code suivant pour envoyer une pièce jointe (.csv) avec caractères chinois. Cependant, MS Excel ne parvient pas à décoder les caractères correctement, il affiche quelque chose comme "¨å¯¹æ- ° ç". Est-ce parce que je n'ai pas défini de propriété lors de l'envoi du courrier?.Codage .NET problème de pièce jointe (.csv)

Merci pour tout conseil.

   byte[] attachBytes = Encoding.UTF8.GetBytes(attachText); 
       ms.Write(attachBytes, 0, attachBytes.Length); 
       // Set the position to the beginning of the stream. 
       ms.Position = 0; 
       ContentType ct = new ContentType(MediaTypeNames.Text.Plain); 

       Attachment attactment = new Attachment(ms, attachFileName); 
       message.Attachments.Add(attactment); 

Répondre

1

Je pense que vous avez besoin d'une configuration d'encodage supplémentaire pour l'objet corps du message, quelque chose comme ceci:

message.BodyEncoding = UTF8 
+0

Salut Ali, il ne fonctionne pas – Ricky

+2

Excell est souvent pauvre en détecter le codage à l'étape suivante (enregistrer à l'emplacement temporaire - perdre certaines métadonnées - et ouvrir). En effet, c'est devenu pire qu'avant. Vous pourriez essayer de mettre une nomenclature au début du fichier comme indice qu'il s'agit d'un contenu UTF-8. –

1

Réglage des pièces jointes codant pour Encoding.UTF32 pourrait aider. En supposant attachText est un string et que vous voulez ajouter un fichier .csv, vous pouvez réduire votre code en utilisant la méthode Attachment.CreateAttachmentFromString():

var attachment = Attachment.CreateAttachmentFromString(attachText, 
                 "filename.csv", 
                 Encoding.UTF32, 
                 "text/csv"); 
message.Attachments.Add(attachment); 
contenu