Подтвердить что ты не робот

Какую кодировку использует Microsoft Excel при сохранении файлов?

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

Я бы тоже догадался:

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

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

4b9b3361

Ответ 1

Файлы CSV могут быть в любом формате, в зависимости от того, какой параметр кодировки был указан во время экспорта из Excel: (Сохранить диалог, кнопку "Инструменты", "Параметры веб-параметров", вкладка "Кодировка" )

ОБНОВЛЕНИЕ: Excel (включая Office 2013) на самом деле не уважает веб-параметры, выбранные в диалоговом окне "Сохранить как...", так что это некоторая ошибка. Я просто использую OpenOffice Calc, чтобы открыть мои файлы XLSX и экспортировать их в виде файлов CSV (изменить настройки фильтра, выбрать кодировку UTF-8).

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Russian Edition предлагает CSV, CSV (Macintosh) и CSV (DOS).

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

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

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

Ответ 6

Вы можете использовать этот код Visual 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

Ответ 7

Excel 2010 сохраняет файл TSV UTF-16/UCS-2, если выбрать " File > Save As > Unicode Text (.txt). Это (принудительно) суффикс ".txt", который вы можете изменить на ".tsv".

Если вам нужен CSV, вы можете затем конвертировать файл TSV в текстовом редакторе, таком как Notepad++, Ultra Edit, Crimson Editor и т.д., Заменяя вкладки точкой с запятой, запятыми или тому подобным. Обратите внимание, что, например, для чтения в таблицу БД, часто TSV уже работает нормально (и часто легче читать вручную).

Если вам нужна другая кодовая страница, такая как UTF-8, используйте один из вышеупомянутых редакторов для конвертации.

Ответ 8

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

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

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

  • Создайте электронную таблицу с символами более высокого порядка, например. "Веспрем" в одной из ячеек;
  • Используйте свой любимый язык сценариев для анализа и декодирования электронной таблицы;
  • Посмотрите, что делает ваш script при печати декодированных данных.

Пример perl script:

#!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 );
    }

}

Ответ 9

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

Ответ 10

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