Encodages Excel
J'ai trouvé le WINDOWS-1252
pour être le moins frustrant dans le cadre d'Excel. Comme il s'agit essentiellement d'un jeu de caractères propriétaire de Microsoft, on peut supposer qu'il fonctionnera aussi bien sur la version Mac que sur la version Windows de MS-Excel. Les deux versions comprennent au moins un sélecteur "Origine du fichier" ou "Encodage du fichier" qui lit correctement les données.
En fonction de votre système et des outils que vous utilisez, cet encodage pourrait également être appelé CP1252
, ANSI
, Windows (ANSI)
, MS-ANSI
ou simplement Windows
parmi d'autres variantes.
Ce codage est un sur-ensemble de ISO-8859-1
(alias LATIN1
et d'autres), afin que vous puissiez vous rabattre sur les éléments suivants ISO-8859-1
si vous ne pouvez pas utiliser WINDOWS-1252
pour une raison quelconque. Sachez que ISO-8859-1
manque certains caractères de WINDOWS-1252
comme indiqué ici :
| Char | ANSI | Unicode | ANSI Hex | Unicode Hex | HTML entity | Unicode Name | Unicode Range |
| € | 128 | 8364 | 0x80 | U+20AC | € | euro sign | Currency Symbols |
| ‚ | 130 | 8218 | 0x82 | U+201A | ‚ | single low-9 quotation mark | General Punctuation |
| ƒ | 131 | 402 | 0x83 | U+0192 | ƒ | Latin small letter f with hook | Latin Extended-B |
| „ | 132 | 8222 | 0x84 | U+201E | „ | double low-9 quotation mark | General Punctuation |
| … | 133 | 8230 | 0x85 | U+2026 | … | horizontal ellipsis | General Punctuation |
| † | 134 | 8224 | 0x86 | U+2020 | † | dagger | General Punctuation |
| ‡ | 135 | 8225 | 0x87 | U+2021 | ‡ | double dagger | General Punctuation |
| ˆ | 136 | 710 | 0x88 | U+02C6 | ˆ | modifier letter circumflex accent | Spacing Modifier Letters |
| ‰ | 137 | 8240 | 0x89 | U+2030 | ‰ | per mille sign | General Punctuation |
| Š | 138 | 352 | 0x8A | U+0160 | Š | Latin capital letter S with caron | Latin Extended-A |
| ‹ | 139 | 8249 | 0x8B | U+2039 | ‹ | single left-pointing angle quotation mark | General Punctuation |
| Œ | 140 | 338 | 0x8C | U+0152 | Œ | Latin capital ligature OE | Latin Extended-A |
| Ž | 142 | 381 | 0x8E | U+017D | | Latin capital letter Z with caron | Latin Extended-A |
| ‘ | 145 | 8216 | 0x91 | U+2018 | ‘ | left single quotation mark | General Punctuation |
| ’ | 146 | 8217 | 0x92 | U+2019 | ’ | right single quotation mark | General Punctuation |
| “ | 147 | 8220 | 0x93 | U+201C | “ | left double quotation mark | General Punctuation |
| ” | 148 | 8221 | 0x94 | U+201D | ” | right double quotation mark | General Punctuation |
| • | 149 | 8226 | 0x95 | U+2022 | • | bullet | General Punctuation |
| – | 150 | 8211 | 0x96 | U+2013 | – | en dash | General Punctuation |
| — | 151 | 8212 | 0x97 | U+2014 | — | em dash | General Punctuation |
| ˜ | 152 | 732 | 0x98 | U+02DC | ˜ | small tilde | Spacing Modifier Letters |
| ™ | 153 | 8482 | 0x99 | U+2122 | ™ | trade mark sign | Letterlike Symbols |
| š | 154 | 353 | 0x9A | U+0161 | š | Latin small letter s with caron | Latin Extended-A |
| › | 155 | 8250 | 0x9B | U+203A | › | single right-pointing angle quotation mark | General Punctuation |
| œ | 156 | 339 | 0x9C | U+0153 | œ | Latin small ligature oe | Latin Extended-A |
| ž | 158 | 382 | 0x9E | U+017E | | Latin small letter z with caron | Latin Extended-A |
| Ÿ | 159 | 376 | 0x9F | U+0178 | Ÿ | Latin capital letter Y with diaeresis | Latin Extended-A |
Notez que le le panneau euro est manquant . Ce tableau peut être consulté à l'adresse suivante Alan Wood .
Conversion
La conversion se fait différemment dans chaque outil et chaque langue. Toutefois, supposons que vous ayez un fichier query_result.csv
qui, vous le savez, est UTF-8
encodé. Convertissez-le en WINDOWS-1252
en utilisant iconv
:
iconv -f UTF-8 -t WINDOWS-1252 query_result.csv > query_result-win.csv
1 votes
Que se passe-t-il si vous utilisez UTF-16LE pour toutes les données du champ mais que vous utilisez le caractère 8bit/ASCII pour la virgule ? D'après cet article ( creativyst.com/Doc/Articles/CSV/CSV01.htm#CSVAndEncodings ), Excel peut interpréter la virgule Unicode comme faisant partie des données du champ et non comme un séparateur.
1 votes
Conseil intéressant @jveazey. Je vais l'essayer :
mb_convert_encoding($str, "UTF-16LE");
dans mon code d'exportation et de poster les résultats ici.0 votes
Non pas que cela vous aide, mais j'ai testé Excel 2007 SP2 sous Windows (en utilisant Notepad2 pour créer les fichiers de test). Tout a fonctionné sauf UTF-16LE BOM (même résultat que le vôtre sous Windows) et UTF-16BE BOM (qui a analysé les champs correctement mais la BOM a été incluse dans les 2 premiers caractères de A1).
0 votes
J'ai aussi trouvé ceci stackoverflow.com/questions/155097/
0 votes
@hveazey, la question citée a une réponse de creechy qui recommande la page de code Windows-1252. Cela n'a pas fonctionné dans mon cas (trémas allemands et s pointus).
0 votes
@notJim, il y a une réponse de Jasdeep Gosal sur stackoverflow.com/questions/4348802, censée fonctionner pour Mac et PC ; je ne l'ai pas encore essayée. Il propose PHPExcel (qui nécessite trop de mémoire pour moi) et une solution TSV, mais j'ai besoin de CSV.
0 votes
Je suis assez sceptique quant à cette solution, car j'ai essayé UTF-8 avec une nomenclature parmi d'autres solutions, et IIRC (je peux me tromper) cela n'a pas fonctionné. Dans tous les cas : a) les problèmes de performance seraient un deal-killer pour moi, et b) ce n'est plus vraiment mon problème de toute façon :) (pour l'instant du moins...)