Какую кодировку использовать для экспорта в CSV?

StackOverflow https://stackoverflow.com/questions/1406204

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Вопрос в том, какую кодировку лучше всего использовать? Как Excel определяет, какую кодировку использовать? Использует ли он что-то специфичное для платформы, которое предположительно соответствует платформе Java по умолчанию?

В настоящее время я склоняюсь к жесткому кодированию Cp1252 - оно должно охватывать целевые машины (среда развертывания фактически указана) и решит проблему теста. Похоже, что Excel не очень хорошо справляется с UTF-8, так что это не так, и соблюдение кодировки платформы по умолчанию потребует некоторого обходного решения для тестов.

Это было полезно?

Решение

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

Однако, поскольку вы пишете, что управляете производственным развертыванием, почему вы не решаетесь использовать жесткий код Cp1252? Это кажется вполне разумным решением, если это целевая кодировка приложения.

Другие советы

Вы можете получить языковой стандарт системы (из системных свойств) и создать выходной файл с этой кодировкой. Если ваши файлы будут открыты только в Excel, может быть, вам стоит взглянуть на Apache POI?

Думаю, что Excel хорошо работает с UTF-16. Что не так с экспортом в UTF-16. По крайней мере, таким образом, символы, не относящиеся к ascii, будут сохранены, а не просто выброшены.

Отредактируйте, хорошо, «хорошо» может преувеличить работу Excel с UTF-16, но все равно кажется, что UTF-16LE работает лучше, чем UTF-8

UTF-8 должен хорошо работать сейчас. Я удалил продукты, затем сохранил их как CSV, использую WP All Import, затем загрузил этот CSV, все это преобразуется в XML, затем все загружается как сообщения WP. Большой! Взгляните на джем танган казино

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top