Я разрабатываю приложение Java, которое экспортирует данные в файлы CSV, предназначенные для открытия в Excel конечными пользователями. Мы только что заметили, что функция экспорта использует кодировку платформы Java по умолчанию. Это приводит к потере символов umlaut и сбою модульного тестирования на сервере сборки (который настроен на использование US-ASCII в качестве кодировки по умолчанию для платформы для точного определения таких потенциальных проблем).
Вопрос в том, какую кодировку лучше всего использовать? Как Excel определяет, какую кодировку использовать? Использует ли он что-то специфичное для платформы, которое предположительно соответствует платформе Java по умолчанию?
В настоящее время я склоняюсь к жесткому кодированию Cp1252 - оно должно охватывать целевые машины (среда развертывания фактически указана) и решит проблему теста. Похоже, что Excel не очень хорошо справляется с UTF-8, так что это не так, и соблюдение кодировки платформы по умолчанию потребует некоторого обходного решения для тестов.