2009-02-03 6 views
54

У меня есть приложение Java, которое читает CSV-файлы, созданные в Excel (например, 2007). Кто-нибудь знает, какую кодировку использует MS Excel для сохранения этих файлов?Какую кодировку использует Microsoft Excel при сохранении файлов?

Я предположил бы либо:

  • окна-1255 (Cp1255)
  • ISO-8859-1
  • UTF8

, но я не могу расшифровать расширенные символы (например, французские акцентированные буквы) с использованием любого из этих типов кодировок.

ответ

13

CSV файлы могут быть в любом формате, в зависимости от того, какой вариант кодирования был указан при экспорте из Excel: (Save Dialog, Инструменты Button, Параметры веб-Item, Encoding Tab)

UPDATE: Excel (включая Office 2013.) на самом деле не учитывает веб-параметры, выбранные в диалоговом окне «Сохранить как ...», так что это какая-то ошибка. Я просто использую OpenOffice Calc, чтобы открыть мои файлы XLSX и экспортировать их в виде файлов CSV (отредактировать настройки фильтра, выбрать кодировку UTF-8).

+4

, а кодировка по умолчанию - «ANSI», обычно одна из cp1250 - cp1258. –

+0

Моя кодировка по умолчанию - UTF-8, но, вероятно, потому, что я выбрал ее в прошлом, и Excel просто помнит мой выбор с момента последнего сохранения файла CSV. Этот выбор, похоже, сохраняется даже после закрытия и повторного запуска Excel. – Triynko

+14

«Веб-параметры» не применяются к экспорту CSV (по крайней мере, с Excel 2007). Кодировка CSV-файла, похоже, соответствует кодировке по умолчанию для установки. На практике это может быть что угодно. К сожалению, по-видимому, нет способа контролировать это во время экспорта. – gawi

-3

OOXML Файлы, подобные файлам Excel 2007, кодируются в UTF-8, согласно википедии. Я не знаю о файлах CSV, но, разумеется, он будет использовать тот же формат ...

3

У меня была аналогичная проблема на прошлой неделе. Я получил несколько CSV-файлов с различными кодировками. Перед импортом в базу данных я затем использовал chardet libary, чтобы автоматически вынюхивать правильную кодировку.

Chardet - это порт с двигателем обнаружения символов Mozillas, и если размер выборки достаточно велик (один акцентированный персонаж не будет делать), он работает очень хорошо.

2

Russian EditionCSV, CSV (Macintosh) и CSV (DOS).

При сохранении на равнине CSV используется windows-1251.

Я просто пытался сохранить французское слово Résumé вместе с русским текстом, это спасло его в HEX как 52 3F 73 75 6D 3F, 3F быть ASCII код question mark.

Когда я открыл CSV файл, слово, конечно же, стал нечитаемым (R?sum?)

0

CP1250 широко используется в документах Microsoft Office, включая Слово и Excel 2003.

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

Простой способ подтвердить это будет:

  1. Создайте таблицу с более высоким символы порядка, например. «Веспрем» в одной из ячеек;
  2. Используйте свой любимый язык сценариев для анализа и декодирования электронной таблицы;
  3. Посмотрите, что производит ваш скрипт при печати декодированных данных.

Пример сценария 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); 
    } 

} 
+4

«cp1250 широко используется в документах Microsoft Office» ... в ВАШЕЙ шее в лесу. cp125n широко используется во всем мире, для 0 <= n <= 8. –

37

Из памяти, Excel использует машинно-зависимую ANSI кодировку. Так что это будет Windows-1252 для установки EN-US, 1251 для русского и т. Д.

+0

True, но Excel 2007 позволяет пользователю (если они могут найти кнопку «Инструменты»!) выбирать из длинного списка; «ANSI» по умолчанию. –

+7

Вот как это должно работать, но функция сломана. Вместо того, чтобы почитать параметр «сохранить этот документ как:», который вы выбираете на вкладке «Сохранить как диалог/инструменты»/вкладке «Элемент/вкладка» в Интернете, Excel просто использует кодовую страницу, установленную в настройках «Регион» и «Язык». – Triynko

-2

Хотя верно, что экспортирование файла excel, содержащего специальные символы в csv, может быть болью в заднице, однако существует простая работа: просто скопируйте/вставьте ячейки в документы google и затем сохраните их там. ,

+5

Похоже, они искали программное решение. Копирование и вставка не соответствуют действительности. Кроме того, этот вопрос * совершенно * старый. Лучше избегать воскрешения старых потоков, если ответ не вносит существенный вклад в предыдущие ответы.) – Leigh

+0

Ну, если вы так говорите. Однако наилучший рейтинг ответа не работает (см. Комментарии), и это не является программным решением. Более того, мое решение работает. Наконец, тема может быть старой, она по-прежнему появляется на первой странице при поиске по проблеме, и нет рабочего решения в потоке, кроме моего. –

+0

Собственно, комментарии говорят, что это ошибка. Они также предлагают две альтернативы, явно не идеальные: OpenOffice или изменение настроек региона и языка. Поэтому я не уверен, как это предложение является значительным улучшением по сравнению с уже предоставленными. Теперь, если в более поздних версиях или программной альтернативе было исправление, я уверен, что другие захотят это услышать. – Leigh

0

Вы можете использовать эту Visual Studio VB.Net код, чтобы получить кодировку:

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 
2

Проснувшись эту старую нить ... Мы сейчас в 2017. И все же Excel не может сохранить простую таблицу в формате CSV, сохраняя исходную кодировку ... Просто потрясающе.

К счастью Google Docs живет в правильном веке. Решение для меня - это просто открыть таблицу с помощью Документов Google, а не загружать ее обратно в CSV. Результатом является правильно закодированный CSV-файл (со всеми строками, закодированными в UTF8).

 Смежные вопросы

  • Нет связанных вопросов^_^