Excel уничтожает специальный символ при сохранении в формате CSV


21

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

Проблема заключается в том, что всякий раз, когда клиент сохраняет электронную таблицу Excel в виде файла MS-DOS .csv, многие специальные символы преобразуются в знаки вопроса "?" (такие символы, как «» /). Однако, если мы затем откроем файл CSV и вручную заменим каждый символ «?» на правильный символ, он будет работать нормально.

Проблема в том, что файл данных ОГРОМНЫЙ, и мы не можем разумно сделать это, поэтому я надеялся, что был способ сохранить его. Мы пытались экспортировать как Unicode и ASCII безрезультатно. Мы также попытались загрузить документы в Google и заново сохранить их, однако эти символы также разбиваются.


2
Если вы работаете в Excel 2007, в диалоговом окне «Сохранить как файл» слева от кнопки «Сохранить» останется выпадающий список «Инструменты». Если вы выберете веб-вариант и на вкладке «Кодировка» вы можете выбрать конкретную кодировку. Попробуйте, если это поможет

Что является примером этого текста?
enderland

1
Проблема не воспроизводима. Убедитесь, что данные соответствуют тому, что вы описываете, а не некоторые символы, которые не могут быть представлены в кодировке MS-DOS.
Юкка К. Корпела

Ответы:


11

Убедитесь, что вы решили сохранить как a, CSV (Comma Delimited)а не как CSV (MS-DOS), поскольку DOS не поддерживает символы UTF-8.


6

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


Это не работает для меня. Я все еще получаю? в файле CSV
thanos.a

4

Возможный обходной путь - сохранить его как Unicode Text(в 2007 году он есть, но не уверен в предыдущих выпусках), который сохраняет его как текстовый файл с разделителями табуляции.

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

Однако в моем входе не было вкладок, встроенных в каждую ячейку, и я не уверен, как это будет обрабатываться.


3

Вот что работает для меня:

  1. Внесите исправления данных в Excel или CSV
  2. Сохранить файл как текст Unicode
  3. Открыть NOTEPAD
  4. Откройте файл Unicode, который вы только что сохранили с помощью NOTEPAD
  5. Используйте свой курсор, чтобы выделить пустую область, которая содержит одну вкладку 5a. Используйте пространство между Acquire Id и типом запроса, потому что в нем содержится ОДНА вкладка!
  6. Нажмите Cnrl-C, чтобы скопировать символ табуляции
  7. Введите Cnlr-H, чтобы открыть функциональное окно Заменить
  8. Щелкните в текстовом поле «Найти» и введите Cnlr-V, чтобы вставить вкладку.
  9. Нажмите в поле «Заменить на текст» и введите запятую
  10. Нажмите Заменить, чтобы проверить его один раз. Убедитесь, что вкладка в файле заменена запятой
  11. Нажмите Заменить все
  12. Нажмите Отмена
  13. Сохраните файл и выйдите
  14. В проводнике Windows измените расширение файла на .csv

1
Это работало для меня, используя Notepad ++.
ChrisB

Да, я должен был экспортировать как Unicode и найти и заменить вкладки на запятые тоже.
Ниллок

2

У меня уже давно есть эта проблема, и, наконец, я посвятил некоторое время, чтобы разобраться с этим! Я смог (казалось бы) исправить проблему, сохранив как «Windows Comma Separated (.csv)». Я попробовал это из .xlsx и .xls, оба преобразованных в .csv просто отлично. Надеюсь, это поможет - дайте мне знать, если какие-либо проблемы всплывают с этим методом. Я сообщу, если увижу что-нибудь в течение следующих нескольких недель


1
Добро пожаловать в Супер пользователя. Рад видеть, что вы прыгаете прямо, чтобы ответить на вопросы.
CharlieRB

1

Решение:

  1. Откройте файл CSV в блокноте (вы заметите, что он говорит ANSI), а затем снова сохраните его как UTF-8 в блокноте.

  2. Тогда импорт должен работать. Однако, если вы снова откроете его в Excel и просто сохраните его, он не будет работать, потому что Excel не может явно кодировать в UTF-8.

  3. Другой вариант - работать с вашим CSV-файлом на www.LibreOffice.org (бесплатно), который может правильно кодировать в UTF-8 (хотя я сам не пробовал это делать).

Я столкнулся с аналогичной проблемой при импорте csv продуктов с дробями в WooCommerce, который был отклонен из-за "?" ошибка символов. Это потому, что файл CSV не был закодирован в UTF-8. ОДНАКО, даже после сохранения файла CSV в Excel с кодировкой UTF-8 он все равно не работал.

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


1
  1. Загрузите и установите Unicode CSV Addin для Excel с https://github.com/jaimonmathew/Unicode-CSV-Addin
  2. Сохраните CSV-файл из нового меню «Unicode CSV», как показано на рисунке ниже.

введите описание изображения здесь


1
Не могли бы вы опубликовать ссылку на эту надстройку, пожалуйста?
Ксавье Пойнас

Я обновил ответ, добавив страницу github. Там вы можете найти страницу загрузки
thanos.a

0

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

Спасибо ваишах


Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любые посты .
Ramhound

0

Нашли лучшее решение из всех: http://woshka.com/blog/microsoft/microsoft-excel/solve-the-problem-saving-excel-csv-format-with-utf-8-unicode-encoding.html

Из ссылки:

1-клик по стартовому меню

2-Выберите панель управления

3-Найти региональные и языковые параметры в классическом режиме или введите его имя в строке поиска в правом верхнем углу окна панели управления.

4-Нажмите на вкладку «Дополнительно» и выберите локали

5-Click на персидском или арабском языке или желаемую программу кодирования UTF-08, которую вы хотите сохранить с Excel в CSV


woshka.com больше не является действующим URL-адресом, на данный момент это припаркованный домен.
Крейг Лондон,

0

для ™ я нашел решение. В файле .xlsx замените все символы «™» на «& tr-ade;». удалить - заменить от. Сохраните файл как .csv и все готово. Жаль, что это работает для вас.


0

На компьютере Mac это то, что работало для меня.

В Excel выберите « Сохранить как», а затем в раскрывающемся списке выберите окна, разделенные запятой (CSV).

Это просто работает !!!


0

Сохранить как юникод Переименовать файл юникода как .csv ( https://www.youtube.com/watch?v=1VP8__shxTg )


Добро пожаловать в Супер пользователя! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
бертиб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.