9
votes

Caractère étrange "Â" avant degrés Celsius symbole "° C"

J'ai demandé à cette Question Il y a une journée concernant les caractères grecs Unicode, et maintenant j'ai une question qui s'appuie sur celui-ci.

Après avoir extrait toutes mes données, j'ai essayé de le préparer à l'importation dans Excel. J'ai dû choisir un fichier délimité à l'onglet car certaines de mes données contiennent des virgules (chanceux moi!). P>

Le problème que je suis en cours est un caractère très étrange après avoir importé les données dans Excel. p>

Les données de colonne dans le bloc-notes ++ ressemblent à ceci: p> xxx pré>

Les données de cellule Excel ressemble à ceci: p>

Total Suspended Solids @105°C


1 commentaires

Réglage explicitement Le format de flux de sortie sur UTF8 corrigera le problème dans Excel. var sw = nouveau system.io.streamwriter (fs, coding.utf8)


3 Réponses :


3
votes

Je ne suis pas absolument sûr, mais je pense que Excel s'attend à ce que l'encodage de caractères Windows-1252, assurez-vous que vous créez votre fichier texte à l'aide de coding.gecoding ("Windows-1252") code> strong>.

Par exemple: p>

using (var writer = new StreamWriter(fileName,false,Encoding.GetEncoding("Windows-1252"))
{
 ....
}


0 commentaires

10
votes
  1. (plus probable) Excel interpréte vos données textuelles sous la forme latine-1 ou Windows-1252 et non UTF-8. "Â °" est ce que vous obtenez si vous prenez les octets UTF-8 pour "°" ( 0xc2 0xb0 ) et interprétez chaque octet en tant que caractère de latin-1 ou de Windows-1252. Existe-t-il une option pour l'encodage d'entrée lorsque vous faites votre importation?
  2. (moins probable) Excel fait la bonne chose, mais vous codez à double codage de vos données (encodage comme UTF-8, puis à la ré-interprète comme un codage de 8 bits et un codage à nouveau comme UTF-8 ou tout autre codage unicode). Notepad ++ Les preuves sont contre celui-ci.

4 commentaires

@Hobbis: OK, cependant, l'original est dans Excel, et ce personnage "Â" spécial n'est pas présent


Tripping rond Les données pourraient introduire le caractère supplémentaire si vous convertissez la page de code de NOT-UTF8 en UTF8.


Le caractère de degré est 0xB0 dans Windows-1252, IBM-437 et ISO latin 1. Lorsque cela est codé dans UTF-8, le 0xB0 devient 0xc2 0xB0. Il semble que Excel lise cela comme "ANSI" par défaut. Lorsque vous importez les données, vous pouvez le dire à UTIF-8 explicitement en sélectionnant «l'origine du fichier» - au moins c'est ce qu'il était dans Excel 2003.


Ou, comme le souligne Philippe Leybaert, vous pouvez simplement écrire le fichier avec un codage Windows-1252 au lieu de UTF-8, tant que vous n'essayez pas d'utiliser des caractères indisponibles dans ce codage.



0
votes

Vous pouvez utiliser BOM UTF-8 pour votre fichier.


0 commentaires