Я пытался найти разумное решение / объяснение (безуспешно), чтобы выяснить, почему Excel по умолчанию удаляет спецификацию при сохранении файла в формате CSV.
Пожалуйста, простите меня, если вы нашли это дубликат этого вопроса. Это обрабатывает чтение CSV-файлов с кодировкой не-ASCII, но не охватывает сохранение файла обратно (что является главной проблемой).
Вот моя текущая ситуация (которую я собираюсь собрать, распространена среди локализованного программного обеспечения, имеющего дело с символами Unicode и форматом CSV):
Мы экспортируем данные в формат CSV, используя UTF-16LE, обеспечивая установку спецификации (0xFFFE). Мы проверяем после того, как файл сгенерирован с помощью шестнадцатеричного редактора, чтобы убедиться, что он был установлен правильно.
Откройте файл в Excel (для этого примера мы экспортируем японские символы) и убедитесь, что Excel обрабатывает загрузку файла с правильной кодировкой.
Попытки сохранить этот файл предложат вам предупреждающее сообщение о том, что файл может содержать функции, которые могут быть несовместимы с кодировкой Unicode, но спросит, хотите ли вы сохранить в любом случае.
Если вы выберете диалоговое окно "Сохранить как", оно сразу же попросит вас сохранить файл как "текст Unicode", а не как CSV. Если вы выберете расширение "CSV" и сохраните файл, он удалит спецификацию (очевидно, вместе со всеми японскими символами).
Почему это случилось? Есть ли решение этой проблемы, или это известная ошибка или ограничение Excel?
Кроме того (как побочный вопрос), похоже, что Excel при загрузке CSV-файлов в кодировке UTF-16LE использует только разделители табуляции. Опять же, это еще одна известная «ошибка» / ограничение Excel?