Как узнать кодировку файла csv

Обновлено: 04.07.2024

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

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

  • windows-1255 (Cp1255)
  • ISO-8859-1
  • utf8 в

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

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

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

из памяти Excel использует машинную кодировку ANSI. Таким образом, это будет Windows-1252 для установки в США, 1251 для русского языка и т. д.

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

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

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

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

Russian Edition предложения CSV , CSV (Macintosh) и CSV (DOS) .

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

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

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

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

простой способ подтвердить это было бы:

  1. создайте таблицу с символами более высокого порядка, например "Veszprém"в одной из ячеек;
  2. используйте свой любимый язык сценариев для разбора и декодирования электронной таблицы;
  3. посмотрите, что ваш скрипт производит, когда распечатайте декодированные данные.

пример скрипта perl:

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

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

Кодировка текста – это схема нумерации символов, в которой каждому символу, цифре или знаку присвоено соответствующее число. Кодировку используют для сохранения и обработки текста на компьютере. Каждый раз при сохранении текста в файл он сохраняется с использованием определенной схемы кодирования, и при открытии этого файла необходимо использовать такую же схему, иначе восстановить исходный текст не получится. Самыми популярными кодировками для кириллицы сейчас являются UTF-8, Windows-1251 (CP1251, ANSI).

Для того чтобы программа смогла правильно открыть текстовый файл, иногда приходится вручную менять кодировку, перекодируя текст из одной схемы в другую. Например, не редко возникают проблемы с открытием файлов CSV, XML, SQL, TXT, PHP.

В этой небольшой статье мы расскажем о том, как изменить кодировку текстового файла на UTF-8, Windows-1251 или любую другую.

Блокнот Windows

Если вы используете операционную систему Windows 10 или Windows 11, то вы можете изменить кодировку текста с помощью стандартной программы Блокнот. Для этого нужно открыть текстовый файл с помощью Блокнота и воспользоваться меню « Файл – Сохранить как ».

меню Файл – Сохранить как

В открывшемся окне нужно указать новое название для файла, выбрать подходящую кодировку и нажать на кнопку « Сохранить ».

изменить кодировку в Блокноте

К сожалению, для подобных задач программа Блокнот часто не подходит. С ее помощью нельзя открывать документы большого размера, и она не поддерживает многие кодировки. Например, с помощью Блокнота нельзя открыть текстовые файлы в DOS 866.

Notepad++

Notepad++ (скачать) является одним из наиболее продвинутых текстовых редакторов. Он обладает подсветкой синтаксиса языков программирования, позволяет выполнять поиск и замену по регулярным выражениям, отслеживать изменения в файлах, записывать и воспроизводить макросы, считать хеш-сумы и многое другое. Одной из основных функций Notepad++ является поддержка большого количества кодировок текста и возможность изменения кодировки текстового файла в UTF-8 или Windows 1251.

Для того чтобы изменить кодировку текста с помощью Notepad++ файл нужно открыть в данной программе. Если программа не смогла правильно определить схему кодирования текста, то это можно сделать вручную. Для этого нужно открыть меню « Кодировки – Кириллица » и выбрать нужный вариант.

выбрать кодировку в Notepad++

После открытия текста можно изменить его кодировку. Для этого нужно открыть меню « Кодировки » и выбрать один из вариантов преобразования. Notepad++ позволяет изменить текущую кодировку текста на ANSI (Windows-1251), UTF-8, UTF-8 BOM, UTF-8 BE BOM, UTF-8 LE BOM.

изменить кодировку в Notepad++

После преобразования файл нужно сохранить с помощью меню « Файл – Сохранить » или комбинации клавиш Ctrl-S.

Akelpad

Akelpad (скачать) – достаточно старая программа для работы с текстовыми файлами, которая все еще актуальна и может быть полезной. Фактически Akelpad является более продвинутой версией стандартной программы Блокнот из Windows. С его помощью можно открывать текстовые файлы большого размера, которые не открываются в Блокноте, выполнять поиск и замену с использованием регулярных выражений и менять кодировку текста.

Для того чтобы изменить кодировку текста с помощью Akelpad файл нужно открыть в данной программе. Если после открытия файла текст не читается, то нужно воспользоваться меню « Файл – Открыть ».

открыть файл в Akelpad

В открывшемся окне нужно выделить текстовый файл, снять отметку « Автовыбор » и выбрать подходящую кодировку из списка. При этом в нижней части окна можно видеть, как будет отображаться текст.

выбрать кодировку в Akelpad

Для того чтобы изменить текущую кодировку текста нужно воспользоваться меню « Файл – Сохранить как » и сохранить документ с указанием новой схемы кодирования.

изменить кодировку в Akelpad

В отличие от Notepad++, текстовый редактор Akelpad позволяет сохранить файл в практически любой кодировке. В частности, доступны Windows 1251, DOS 886, UTF-8 и многие другие.


1,603 1 1 gold badge 13 13 silver badges 12 12 bronze badges

9 Answers 9

You can use Notepad++ to evaluate a file's encoding without needing to write code. The evaluated encoding of the open file will display on the bottom bar, far right side. The encodings supported can be seen by going to Settings -> Preferences -> New Document/Default Directory and looking in the drop down.

Huh? Is this using chardet or what? This feels like a bad answer.

In Linux systems, you can use file command. It will give the correct encoding

Presumably the original question was about a Windows system, even if your answer may be helpful for Linux users? @Rick. Many many encodings are supersets of ASCII. From a reading of the Wikipedia article, GB2312/EUC-CN text which contains only ASCII characters is indistinguishable from ASCII.

If you use Python, just use a print() function to check the encoding of a csv file. For example:

The output is something like this:

This really helps a lot for me to find where the bug is.

Install python, then pip install chardet, at last use the command line command.

I tested under GB2312 and it's pretty accurate. (Make sure you have at least a few characters, sample with only 1 character may fail easily).

file is not reliable as you can see.

enter image description here


4,871 1 1 gold badge 29 29 silver badges 56 56 bronze badges Indeed, chardetect (the cli tool from python-chardet package shipped with most distro) is more reliable than file, but it can also take much longer (especially with huge file) to compute a result with a certain degree of confidence

You can also use python chardet library


In Python, You can Try.


Or you can execute in python console or in Jupyter Notebook:

You will see information about the data object like this:

As you can see it contains encoding infotmation.

CSV files have no headers indicating the encoding.

You can only guess by looking at:

  • the platform / application the file was created on
  • the bytes in the file

In 2021, emoticons are widely used, but many import tools fail to import them. The chardet library is often recommended in the answers above, but the lib does not handle emoticons well.

This gives UnicodeDecodeError while trying to read the file with this encoding.

The default encoding on Mac is UTF-8. It's included explicitly here but that wasn't even necessary. but on Windows it might be.

The file command also picked this up

My advice in 2021, if the automatic detection goes wrong: try UTF-8 before resorting to chardet .

Если при импорте контактов вы видите нечитаемые символы, как на скриншоте, это значит, что кодировка файла не подходит для импорта в Unisender. Файл нужно перекодировать в UTF-8. Далее мы расскажем, как это сделать в Excel.

нечитаемые числа.

Переходим на вкладку «Данные», выбираем «Получение внешних данных», а далее — «Из текста».

получение данных из текста.

Открывается мастер импорта текста.
С текущей кодировкой содержимое файла нечитабельное.

текущая кодировка.

В поле «Формат файла» перебираем кодировки, пока не найдём ту, в которой текст отображается правильно. Вариантов много, поэтому можно начать с форматов, которые начинаются со слова «Кириллица». Находим нужный формат, нажимаем «Далее».

Выбираем символы-разделители. В нашем случае это запятая.

Нажимаем «Далее» → «Готово» → «OK».

выбираем символы-разделители.

Так выглядит импортированный текст в Excel.

как выглядит документ в ексель.

Теперь нажимаем «Файл» → «Сохранить как».

Вводим название файла, тип файла выбираем CSV, ниже нажимаем «Сервис» → «Параметры веб-документа».

сохраняем файл.

Переходим на вкладку «Кодировка», выбираем «Юникод UTF-8» и нажимаем «OK».

Читайте также: