Чтобы вывести все различия между файлами в один файл с помощью Beyond Compare:
Для циклического просмотра различий по одному файлу за раз:
Файлы CSV могут быть в любом формате, в зависимости от того, какая опция кодировки была указана при экспорте из Excel: (диалоговое окно «Сохранить», кнопка «Инструменты», элемент веб-параметров, вкладка «Кодировка»)
ОБНОВЛЕНИЕ: Excel (включая Office 2013) на самом деле не учитывает веб-параметры, выбранные в диалоговом окне «Сохранить как ...», так что это своего рода ошибка. Я просто использую OpenOffice Calc сейчас, чтобы открывать свои файлы XLSX и экспортировать их как файлы CSV (редактировать настройки фильтра, выбирать кодировку UTF-8).
У меня была подобная проблема на прошлой неделе. Я получил много файлов CSV с переменной кодировкой. Прежде, чем импортировать в базу данных я затем использовал chardet libary для автоматического пронюхивания корректного кодирования.
Chardet является портом от механизма обнаружения символа Mozillas и если объем выборки будет достаточно большим (то один подчеркнутый символ не сделает), работы действительно хорошо.
Russian Edition
предложения CSV
, CSV (Macintosh)
и CSV (DOS)
.
При сохранении в плоскости CSV
, это использует windows-1251
.
я просто попытался сохранить французский Word Résumé
наряду с российским текстом, он сохранил его в HEX
как 52 3F 73 75 6D 3F
, 3F
являющийся эти ASCII
код для [1 111].
, Когда я открылся CSV
файл, слово, конечно, стало нечитабельным (R?sum?
)
OOXML файлы как те, которые происходят из Excel 2007, кодируются в UTF-8, согласно Википедии. Я не знаю о файлах CSV, но это выдерживает обосновать, что это использовало бы тот же формат...
В памяти Excel использует машинно-зависимую кодировку ANSI. Таким образом, это будет Windows-1252 для установки EN-US, 1251 для русского языка и т. Д.
cp1250 широко используется в документах Microsoft Office, включая Word и Excel 2003.
http://en.wikipedia.org/wiki/Windows-1250
Простой способ подтвердить это:
Пример сценария 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 );
}
}