2009-09-10 4 views
1

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

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

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

ответ

1

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

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

+0

Это огромная система со многими командами, развивающимися параллельно, а развертывание и работа полностью отделены от разработки. Среда развертывания контролируется операционными парнями, которые являются другим отделом - и кто знает, что они будут делать? –

0

Think Excel хорошо работает с UTF-16. Что не так с экспортом в UTF-16. По крайней мере, так будут сохраняться не-ascii персонажи, а не просто отбрасывать их.

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

+0

Согласно http://stackoverflow.com/questions/451636/whats-the-best-way-to-export-utf8-data-into-excel Excel не работает с UTF-16 –

0

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

+0

Мы уже используем стандартную кодировку платформы - это то, что происходит на Java, когда вы не указываете кодировку. Использование POI, вероятно, будет самым прочным решением, но скорее будет более трудным и большим изменением, чем то, что мы хотим сделать прямо сейчас. –

0

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