Excel в CSV с кодировкой UTF8 - PullRequest
567 голосов
/ 19 ноября 2010

У меня есть файл Excel, содержащий несколько испанских символов (тильды и т. Д.), Которые мне нужно преобразовать в файл CSV для использования в качестве файла импорта.Однако, когда я делаю Save As CSV, он искажает «специальные» испанские символы, которые не являются символами ASCII.Похоже, что это также происходит с левыми и правыми кавычками и длинными черточками, которые, похоже, исходят от исходного пользователя, создающего файл Excel в Mac.

Поскольку CSV - это просто текстовый файл, я уверен, чтообрабатывать кодировку UTF8, поэтому я предполагаю, что это ограничение Excel, но я ищу способ перейти из Excel в CSV и сохранить нетронутыми символы, не входящие в ASCII.

Ответы [ 36 ]

384 голосов
/ 19 ноября 2010

Простой обходной путь - использовать Google Spreadsheet. Вставьте (значения только при наличии сложных формул) или импортируйте лист, затем загрузите CSV. Я только что попробовал несколько символов, и это работает довольно хорошо.

ПРИМЕЧАНИЕ. Google Sheets имеет ограничения при импорте. Смотри здесь .

ПРИМЕЧАНИЕ. Будьте осторожны с конфиденциальными данными в Google Sheets.

EDIT: Другая альтернатива - в основном они используют VB-макрос или надстройки для принудительного сохранения как UTF8. Я не пробовал ни одно из этих решений, но они звучат разумно.

123 голосов
/ 19 ноября 2010

Я нашел Приложение для работы с электронными таблицами OpenOffice , Calc, действительно хорошо обрабатывает данные CSV.

В диалоговом окне «Сохранить как ...» нажмите «Параметры формата», чтобы получить различные кодировки для CSV. LibreOffice работает так же, как AFAIK.

calc save dialog

105 голосов
/ 19 марта 2013
  1. Сохраните лист Excel как «Текст Unicode (.txt)». Хорошей новостью является то, что все международные символы находятся в UTF16 (обратите внимание, не в UTF8). Однако новый файл "* .txt" разделен символом TAB, не разделен запятыми и, следовательно, не является истинным CSV.

  2. (необязательно) Если вы не можете использовать файл TAB с разделителями для импорта, используйте ваш любимый текстовый редактор и заменяйте символы табуляции запятыми ",".

  3. Импортируйте ваш * .txt файл в целевое приложение. Убедитесь, что он может принимать формат UTF16.

Если UTF-16 был правильно реализован с поддержкой кодовых точек, отличных от BMP, вы можете преобразовать файл UTF-16 в UTF-8 без потери информации. Я оставляю это вам, чтобы найти ваш любимый способ сделать это.

Я использую эту процедуру для импорта данных из Excel в Moodle.

41 голосов
/ 30 октября 2012

Я знаю, что это старый вопрос, но я случайно натолкнулся на этот вопрос, когда боролся с теми же проблемами, что и ОП.

Не найдя ни одного из предложенных решений приемлемым вариантом, я решил выяснить, есть ли способ сделать это просто с помощью Excel.

К счастью, я обнаружил, что проблема потерянных символов возникает (в моем случае) только при сохранении из формата xlsx в формат csv. Я попытался сохранить файл xlsx сначала в xls, затем в csv. Это действительно сработало.

Пожалуйста, попробуйте и посмотрите, работает ли он для вас. Удачи.

35 голосов
/ 12 июня 2012

Вы можете использовать команду iconv в Unix (также доступно в Windows как libiconv ).

После сохранения в формате CSV в Excel в командной строке введите:

iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(не забудьте заменить cp1250 вашей кодировкой).

Работает быстро и отлично подходит для больших файлов, таких как база данных почтовых индексов, которые нельзя импортировать в GoogleDocs (ограничение 400 000 ячеек).

24 голосов
/ 28 января 2015

Единственный «легкий» способ сделать это заключается в следующем.Во-первых, поймите, что есть разница между тем, что отображается, и тем, что скрыто в файле .csv Excel.

  1. Откройте файл Excel, в котором есть информация (.xls, .xlsx)
  2. В Excel выберите «CSV (с запятой) (* .csv) в качестве типа файла и сохраните как этот тип.
  3. В NOTEPAD (находится в разделе« Программы », а затем« Стандартные »в меню« Пуск »).), откройте сохраненный файл .csv в Блокноте
  4. Затем выберите -> Сохранить как ... и в нижней части поля «Сохранить как» появится поле выбора, помеченное как «Кодировка». Выберите UTF-8 (НЕ используйте ANSI, иначе вы потеряете все акценты и т. Д.) После выбора UTF-8 сохраните файл с именем файла, немного отличающимся от исходного.

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

Этот ответ взят из этого форума .

23 голосов
/ 13 июля 2016

Вы можете сделать это на современном компьютере с Windows без стороннего программного обеспечения. Этот метод является надежным, и он будет обрабатывать данные, которые включают в себя запятые в кавычках, символы вкладки в кавычках, символы CJK и т. Д.

1. Сохранить из Excel

В Excel сохраните данные в file.txt, используя тип Unicode Text (*.txt).

2. Запустить PowerShell

Запустите powershell из меню Пуск.

3. Загрузите файл в PowerShell

$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode

4. Сохранить данные как CSV

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation
22 голосов
/ 04 апреля 2011

Еще один, который я нашел полезным: « Numbers » позволяет настройки кодирования при сохранении в формате CSV.

14 голосов
/ 18 мая 2012

«nevets1219» подходит для Google docs, однако, если вы просто «импортируете» файл, он часто не конвертирует его в UTF-8.конвертирует в UTF-8.

Вот рецепт:

  • На главном экране документов (или диска) нажмите кнопку «Создать» и выберите «Электронная таблица»
  • В меню «Файл» выберите «Импорт»
  • Нажмите «Выбрать файл»
  • Выберите «Заменить электронную таблицу»
  • Выберите любой символ, который вы используете в качестве разделителя
  • Нажмите «Импорт»
  • В меню «Файл» выберите «Загрузить как» -> CSV (текущий лист)

Полученный файл будет в формате UTF-8

9 голосов
/ 02 июня 2018

Использование Блокнота ++

Это исправит поврежденный файл CSV, сохраненный в Excel, и повторно сохранит его в правильной кодировке.

  • Экспорт CSV из Excel
  • Загрузить в блокнот ++
  • Исправить кодировку
  • Сохранить

Excel сохраняет в CP-1252 / Windows-1252. Откройте файл CSV в Notepad ++. Выберите

Encoding > Character Sets > Western European > Windows-1252

Тогда

Encoding > Convert to UTF-8
File > Save

Сначала укажите Notepad ++ кодировку, , затем convert. Некоторые из этих других ответов конвертируются без предварительной установки правильной кодировки, еще больше искажая файл. Они превратят то, что должно быть в . Если ваш персонаж не вписывается в CP-1252, то он уже был потерян, когда был сохранен как CSV. Используйте другой ответ для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...