Я пытался найти, что разумное решение/объяснение (неудачно) узнает, почему значения по умолчанию Excel к удалению BOM, сохранив файл к CSV вводят.
Простите мне при нахождении этого дубликатом этого вопроса. Это обрабатывает файлы CSV чтения с кодированием неASCII, но оно не покрывает сохранение файла, отступают (который является, где самая большая проблема находится).
Вот моя текущая ситуация (который я собираюсь собрать, распространено среди локализованного программного обеспечения, имеющего дело с символами Unicode и форматом CSV):
Мы экспортируем данные в формат CSV с помощью UTF-16LE, удостоверяясь, что BOM установлен (0xFFFE). Мы проверяем после того, как файл сгенерирован с Hex-редактором, чтобы гарантировать, что он был установлен правильно.
Откройте файл в Excel (для этого примера, мы экспортируем японские символы), и свидетель, что дескрипторы Excel, загружающие файл корректным кодированием.
Попытки сохранить этот файл предложат Вам с предупреждающим сообщением, указывающим, что файл может содержать функции, которые не могут быть совместимы с кодированием Unicode, но спрашивают, требуется ли сохранить так или иначе.
При выборе Сохранения как диалогового окна оно сразу попросит, чтобы Вы сохранили файл как "текст Unicode", а не CSV. Если Вы выбираете расширение "CSV" и сохранили файл, это удаляет BOM (очевидно, наряду со всеми японскими символами).
Почему это произошло бы? Существует ли решение этой проблемы, или действительно ли это - известная 'ошибка '/limitation Excel?
Дополнительно (как второстепенный вопрос) кажется, что Excel, при загрузке UTF-16LE закодировал файлы CSV, только Разграничители табуляции использования. Снова, эта другая известная 'ошибка '/limitation Excel?
Нет никаких вежливых ответов на вопросы формы, "Почему Excel делает X?".
Почему Вы только не принимаете, "Сохраняют как текст Unicode" как Ваш стандартный формат передачи? Excel Save as гарантирует, что существует BOM, ВКЛАДКА использования как разделитель, поля кавычек точно так же, как CSV...
Между прочим, Вы "не выбираете расширение CSV". У Вас есть ДВА варианта - формат и расширение. Попробуйте сохраняют как unicode текст в поле 'Save as type' и вручную изменяют расширение в поле 'File name' к csv. Затем выход от Excel и дважды щелкает по имени файла в Windows Explorer. Открывается прекрасный.Попробуйте.
Обновление для обсуждения комментариев OP:
=> Считайте тщательно, что я записал выше, и испытайте его для Вашего сам. Это всегда сохранит Ваш файл с расширением TXT, если Вы не переопределите это: удалите txt
в поле 'File name' и типе csv
.
=> "Сохраняют, поскольку текст Unicode" гарантирует, что существует BOM UTF-16LE впереди файла. Попробуйте его и посмотрите.
=> и Ваши ожидания не встречены, потому что Excel не сохраняет информации о входных файлах CSV. Нет никакого способа вынудить это сделать то, что Вы хотите сделать. Таким образом, Вы или сдаетесь или пробуете что-то еще, как то, что я предлагаю.
=> Я испытал эти проблемы, с китайскими данными и Excel 1997, несколько лет назад. Я, прежде, чем ответить на Ваш вопрос, проверил с Excel 2003 и Excel 2007, что Excel все еще ведет себя плохо. Я проверил, что "сохраняют как тип = текст Unicode, расширение =, CSV" обходное решение действительно работает. Я обеспечил свое понимание.