J'ai une application Java qui lit les fichiers CSV créés dans Excel (par exemple 2007). Est-ce que quelqu'un sait quel jeu de caractères est utilisé par MS Excel pour enregistrer ces fichiers?
J'aurais deviné non plus:
mais je ne parviens pas à décoder les caractères étendus (par exemple, les lettres accentuées en français) en utilisant l'un ou l'autre de ces types.
Les fichiers CSV peuvent être dans n'importe quel format, en fonction de l'option de codage spécifiée lors de l'exportation à partir d'Excel: (boîte de dialogue Enregistrer, bouton Outils, élément des options Web, onglet Encodage)
MISE À JOUR: Excel (y compris Office 2013) ne respecte pas les options Web sélectionnées dans la boîte de dialogue "Enregistrer sous ...", il s'agit donc d'un bogue. J'utilise maintenant OpenOffice Calc pour ouvrir mes fichiers XLSX et les exporter en tant que fichiers CSV (modifiez les paramètres de filtre, choisissez le codage UTF-8).
En mémoire, Excel utilise le codage ANSI spécifique à la machine. Donc, ce serait Windows-1252 pour une installation EN-US, 1251 pour le russe, etc.
J'ai eu un problème similaire la semaine dernière. J'ai reçu un certain nombre de fichiers CSV avec différents encodages. Avant d'importer dans la base de données, j'utilisais ensuite chardet libary pour détecter automatiquement le codage correct.
Chardet est un port du moteur de détection de caractères de Mozillas et si la taille de l’échantillon est suffisamment grande (un caractère accentué ne suffira pas), fonctionne vraiment bien.
Réveiller ce vieux fil de discussion ... Nous sommes maintenant en 2017. Et Excel ne parvient toujours pas à enregistrer une simple feuille de calcul au format CSV tout en préservant l'encodage d'origine ... Tout simplement incroyable.
Heureusement, Google Docs vit dans le bon siècle. La solution pour moi consiste simplement à ouvrir la feuille de calcul à l'aide de Google Docs, puis à la télécharger à nouveau au format CSV. Le résultat est un fichier CSV correctement codé (avec toutes les chaînes codées en UTF8).
Russian Edition
offre CSV
, CSV (Macintosh)
et CSV (DOS)
.
Lors de l’enregistrement en version standard CSV
, il utilise windows-1251
.
J'ai juste essayé de sauvegarder le mot français Résumé
avec le texte russe. Il l'a enregistré dans HEX
comme 52 3F 73 75 6D 3F
, 3F
étant le code ASCII
pour question mark
.
Lorsque j'ai ouvert le fichier CSV
, le mot est devenu illisible (R?sum?
)
Excel 2010 enregistre un fichier UTF-16/UCS-2TSV, si vous sélectionnez File > Save As > Unicode Text (.txt)
. C'est le suffixe (force) ".txt", que vous pouvez changer en ".tsv".
Si vous avez besoin de CSV, vous pouvez ensuite convertir le fichier TSV en un éditeur de texte tel que Notepad ++, Ultra Edit, Crimson Editor, etc. Notez que par exemple Pour la lecture dans une table de base de données, TSV fonctionne déjà très bien (et il est souvent plus facile de lire manuellement).
Si vous avez besoin d'une page de code différente, telle que UTF-8, utilisez l'un des éditeurs mentionnés ci-dessus pour la conversion.
Vous pouvez utiliser ce code Visual Studio VB.Net pour obtenir le codage:
Dim strEncryptionType As String = String.Empty
Dim myStreamRdr As System.IO.StreamReader = New System.IO.StreamReader(myFileName, True)
Dim myString As String = myStreamRdr.ReadToEnd()
strEncryptionType = myStreamRdr.CurrentEncoding.EncodingName