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

15

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

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

Вот моя текущая ситуация (которую я собираюсь собрать, распространена среди локализованного программного обеспечения, имеющего дело с символами Unicode и форматом CSV):

  • Мы экспортируем данные в формат CSV, используя UTF-16LE, обеспечивая установку спецификации (0xFFFE). Мы проверяем после того, как файл создан с помощью шестнадцатеричного редактора, чтобы убедиться, что он был установлен правильно

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

  • Попытки сохранить этот файл предложат вам предупреждающее сообщение о том, что файл может содержать функции, которые могут быть несовместимы с кодировкой Unicode, но спросит, хотите ли вы сохранить в любом случае.

  • Если вы выберете диалоговое окно «Сохранить как», оно сразу же попросит вас сохранить файл как «текст Unicode», а не как CSV. Если вы выберете расширение «CSV» и сохраните файл, он удалит спецификацию (очевидно, вместе со всеми японскими символами).

Почему это случилось? Есть ли решение этой проблемы, или это известная ошибка или ограничение Excel?

Кроме того (как побочный вопрос), похоже, что Excel при загрузке CSV-файлов в кодировке UTF-16LE использует только разделители табуляции. Опять же, это еще одна известная «ошибка» / ограничение Excel?

rickp
источник

Ответы:

6

Нет вежливых ответов на вопросы формы «Почему Excel делает X?».

Почему бы вам просто не принять «Сохранить как текст Unicode» в качестве стандартного формата передачи? Excel Сохранить как гарантирует, что есть спецификация, использует TAB в качестве разделителя, цитирует поля так же, как CSV ...

Кстати, вы не «выбираете расширение CSV». У вас есть два варианта - формат и расширение. Попробуйте сохранить как текст Unicode в поле «Сохранить как тип» и вручную изменить расширение в поле «Имя файла» на csv. Затем выйдите из Excel и дважды щелкните имя файла в проводнике Windows. Открывается нормально. Попытайся.

Обновление для обсуждения комментариев ОП :

  • «Сохранить как текст Unicode» (в Excel 2007) всегда будет сохранять ваш файл как расширение текста (я не могу говорить для предыдущих или более новых версий). Это идея "Сохранить как тип" ...

=> Пожалуйста, внимательно прочитайте то, что я написал выше, и попробуйте сами. Он всегда сохранит ваш файл с расширением TXT, если вы не переопределите это : удалите txtполе «Имя файла» и введите csv.

  • Чтобы уточнить ваш «Excel Сохранить как убедиться, что есть спецификация», это неправильно.

=> «Сохранить как текст Unicode » гарантирует, что в начале файла находится спецификация UTF-16LE. Попробуйте и посмотрите.

  • Это причина, почему я задал вопрос в первую очередь! Если я открою файл в формате CSV, который содержит спецификацию, чтобы указать, что мой файл имеет кодировку UFT-16LE, и изменил этот файл через Excel, я ожидаю, что при сохранении этого файла кодировка останется в такте ...

=> и ваши ожидания не оправдались, потому что Excel не сохраняет никакой информации о входных CSV-файлах. Нет способа заставить его делать то, что вы хотите. Так что или сдавайся, или попробуй что-нибудь еще, например то, что я предлагаю.

  • Что было бы действительно хорошо, это кто-то, кто испытывал эти проблемы раньше, пожалуйста, предоставьте свое понимание.

=> Я столкнулся с этими проблемами, с китайскими данными и Excel 1997 года назад. Прежде чем ответить на ваш вопрос, я проверил в Excel 2003 и Excel 2007, что Excel по-прежнему ведет себя плохо. Я убедился, что обходной путь «сохранить как тип = текст Unicode, extension = CSV» действительно работает. Я предоставил свои идеи.

Джон Мачин
источник
1
«Сохранить как текст Unicode» (в Excel 2007) всегда будет сохранять ваш файл как расширение текста (я не могу говорить для предыдущих или более новых версий). Это идея «Сохранить как тип» ... Чтобы уточнить «Excel Сохранить как убедиться, что есть спецификация», это неправильно. Это причина, почему я задал вопрос в первую очередь! Если я открою файл в формате CSV, который содержит спецификацию, чтобы указать, что мой файл имеет кодировку UFT-16LE, и изменю этот файл через Excel, то при сохранении этого файла я ожидаю, что кодировка останется в такте ... кто сталкивался с этими проблемами раньше, сообщите, пожалуйста, свое понимание.