2012-12-31 2 views
0

J'utilise le code suivant pour exporter le contenu dans le fichier .cvs qui supporte également les caractères chinois et japonais. Lorsque j'exporte mon fichier, je ne reçois pas les caractères chinois ou japonais appropriés. Que manque-t-il?export chinois, caractère japanes dans le fichier .csv + mvc3

J'ai utilisé le codage UTF32 pour le supporter.

Modifié:

j'ai remarqué que l'ouverture de mon fichier .csv dans le bloc-notes affiche des caractères parfaits, mais ms-excel does't.

+0

Pouvez-vous jeter un oeil sous Options Excel, dans la section avancée, il est sous le général un bouton Options Web ... Si vous pouvez influencer le codage Excel utilise que cela est votre chance. Je crois que la boîte de dialogue weboptions est également disponible depuis le bouton Outils de la boîte de dialogue d'ouverture de fichier. – rene

+0

J'ai essayé de mettre l'encodage sous weboptions en Unicode (Big-Endian) mais ça ne marche pas pour moi – BrainCoder

Répondre

1

Comme vous êtes sur asp.net et que vous utilisez ce fichier, vous devez également gérer le codage de la pipleline http. Je n'ai pas repéré ça plus tôt, désolé. Au lieu d'avoir un simple ActionResult, vous devez utiliser l'un des ActionResults dérivés, j'ai utilisé FileContentResult. S'il vous plaît payer la note aux ContentType spéciales que je suis la construction de dire aux navigateurs un fichier UTF-32 est à venir ...

public ActionResult Download(string accnumber) 
{ 
     string csvContent = "东西,东西,东西, hi"; 
     var data = Encoding.UTF8.GetBytes(csvContent); 
     // add byte order mark 
     var bom = new byte[] { 0xEF, 0xBB, 0xBF }; 
     // hold it all 
     var all = new byte[bom.Length + data.Length]; 
     // copy over BOM 
     Array.Copy(bom, all, bom.Length); 
     // copy over data 
     Array.Copy(data, 0, all, bom.Length, data.Length); 

     string filename = "CSV_" + accnumber + ".csv"; 
     var file = new FileContentResult(all, "text/csv") 
     { 
      FileDownloadName = filename 
     }; 

     return file;  
} 
+0

J'ai essayé votre solution en changeant 'ContentType = text/csv; charset = UTF-32' mais ça ne marchera pas pour moi . – BrainCoder

+0

Dans le bloc-notes, les résultats sont toujours OK? – rene

+0

oui dans le bloc-notes le résultat est OK – BrainCoder

0

j'ai rencontré ce problème aussi. Je le répare en ajoutant la ligne suivante juste avant "return file"; Et cela fonctionne pour moi.

Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>"); 
return file; 
0

J'ai aussi le même problème, le résoudre en utilisant UTF-8-BOM.

Encoding.UTF8.GetPreamble().Concat(Encoding.UTF8.GetBytes(stringData)).ToArray()