65 votes

Quel jeu de caractères Microsoft Excel utilise-t-il lors de l'enregistrement de fichiers?

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 utilise MS Excel pour enregistrer ces fichiers?

J'aurais deviné non plus:

  • windows-1255 (Cp1255)
  • ISO-8859-1
  • UTF8

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 de caractères.

42voto

devstuff Points 5881

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.

18voto

Triynko Points 5600

Les fichiers CVS 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)

4voto

pi. Points 6026

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 l’encodage 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), cela fonctionnera très bien.

2voto

Quassnoi Points 191041

Russian Edition propose CSV, CSV (Macintosh) et CSV (DOS).

Lors de l'enregistrement dans la plaine, CSV, il utilise windows-1251.

J'ai juste essayé de sauver la langue française, le mot Résumé avec le texte russe, il l'a sauvé en HEX comme 52 3F 73 75 6D 3F, 3F étant l' ASCII code question mark.

Quand j'ai ouvert l' CSV le fichier, le mot, bien sûr, est devenu illisible (R?sum?)

-1voto

robbiebow Points 66

cp1250 est largement utilisé dans les documents de Microsoft Office, y compris Word et Excel 2003.

http://en.wikipedia.org/wiki/Windows-1250

Une façon simple de confirmer, ce serait:

  1. Créer une feuille de calcul d'ordre supérieur caractères, par exemple: "Veszprém" dans l'une des cellules;
  2. Utilisez votre favori langage de script pour analyser et décoder la feuille de calcul;
  3. Regardez ce que votre script produit lorsque vous imprimez les données décodées.

Exemple de script perl:

#!perl

use strict;

use Spreadsheet::ParseExcel::Simple;
use Encode qw( decode );

my $file    = "my_spreadsheet.xls";

my $xls     = Spreadsheet::ParseExcel::Simple->read( $file );
my $sheet   = [ $xls->sheets ]->[0];

while ($sheet->has_data) {

    my @data = $sheet->next_row;

    for my $datum ( @data ) {
        print decode( 'cp1250', $datum );
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X