Я разрабатываю часть приложения, которое отвечает за экспорт некоторых данных в файлы CSV. Приложение всегда использует UTF-8 из-за его многоязычности на всех уровнях. Но открытие таких файлов CSV (содержащих, например, диакритические знаки, буквы кириллицы, греческие буквы) в Excel не дает ожидаемых результатов, показывающих что-то подобное Г„/Г¤, Г–/Г¶
. И я не знаю, как заставить Excel понять, что открытый CSV-файл закодирован в UTF-8. Я также попытался указать спецификацию UTF-8 EF BB BF
, но Excel игнорирует это.
Есть ли обходной путь?
PS Какие инструменты могут вести себя как Excel?
ОБНОВИТЬ
Я должен сказать, что я перепутал сообщество с формулировкой вопроса. Когда я задавал этот вопрос, я попросил способ открыть файл CSV UTF-8 в Excel без каких-либо проблем для пользователя, бегло и прозрачно. Однако я использовал неправильную формулировку, прося сделать это автоматически . Это очень запутанно, и это противоречит автоматизации макросов VBA. Есть два ответа на этот вопрос, которые я ценю больше всего: самый первый ответ Алекса https://stackoverflow.com/a/6002338/166589 , и я принял этот ответ; а второй от Марка https://stackoverflow.com/a/6488070/166589которые появились чуть позже. С точки зрения удобства использования, у Excel, похоже, не было хорошей и удобной поддержки CSV в UTF-8, поэтому я считаю, что оба ответа верны, и сначала я принял ответ Алекса, потому что он действительно утверждал, что Excel не смог сделать это прозрачно. Это то, что я тут перепутал автоматически . Ответ Марка помогает более продвинутым пользователям достичь ожидаемого результата. Оба ответа великолепны, но ответ Алекса немного лучше подходит для моего неясного вопроса.
ОБНОВЛЕНИЕ 2
Спустя пять месяцев после последнего редактирования я заметил, что ответ Алекса почему-то исчез. Я действительно надеюсь, что это не техническая проблема, и я надеюсь, что больше нет обсуждения того, какой ответ больше. Поэтому я принимаю ответ Марка как лучший.
\t
качестве разделителя. Будет работать в английском и не английском настройках Excel. Можно нажимать Ctrl-S
без выбора формата файла и т. Д. Сохранятся символы Unicode.