Я намагався знайти розумне рішення / пояснення (безуспішно), щоб з'ясувати, чому за замовчуванням Excel видаляє специфікацію під час збереження файлу у тип CSV.
Прошу вибачити мене, якщо ви знайдете цей дублікат цього питання. Це обробляє читання файлів CSV за допомогою не-ASCII-кодування, але не охоплює збереження файлу назад (що є найбільшою проблемою).
Ось моє поточне становище (яке я збираюся збирати є поширеним серед локалізованого програмного забезпечення, що стосується символів Unicode та формату CSV):
Ми експортуємо дані до формату CSV за допомогою UTF-16LE, забезпечуючи встановлення специфікації (0xFFFE). Ми перевіряємо після того, як файл згенерований редактором Hex, щоб переконатися, що його було встановлено правильно.
Відкрийте файл в Excel (для цього прикладу ми експортуємо японські символи) і засвідчіть, що Excel обробляє завантаження файлу з правильним кодуванням.
Спроби зберегти цей файл підкажуть вам попереджувальне повідомлення про те, що файл може містити функції, які можуть не бути сумісними з кодуванням Unicode, але запитує, чи хочете ви зберегти їх.
Якщо ви оберете діалогове вікно "Зберегти як", він негайно попросить зберегти файл як "Unicode Text", а не CSV. Якщо ви виберете розширення "CSV" і збережете файл, він видаляє специфікацію (очевидно разом з усіма японськими символами).
Чому це станеться? Чи існує рішення цієї проблеми, чи це відома "помилка" / обмеження Excel?
Додатково (як сторона проблема) видається, що Excel, завантажуючи UTF-16LE закодовані файли CSV, використовує лише роздільники TAB. Знову ж таки, це ще одне відоме "помилка" / обмеження Excel?