Tworzę część aplikacji odpowiedzialną za eksport niektórych danych do plików CSV. Aplikacja zawsze używa UTF-8 ze względu na jego wielojęzyczny charakter na wszystkich poziomach. Ale otwarcie takich plików CSV (zawierających np. Znaki diakrytyczne, litery cyrylicy, litery greckie) w programie Excel nie daje oczekiwanych rezultatów pokazujących coś podobnego Г„/Г¤, Г–/Г¶
. I nie wiem, jak zmusić Excela do zrozumienia, że otwarty plik CSV jest zakodowany w UTF-8. Próbowałem też podać BOM UTF-8 EF BB BF
, ale Excel to ignoruje.
Czy istnieje jakieś obejście?
PS Jakie narzędzia mogą potencjalnie zachowywać się tak jak Excel?
AKTUALIZACJA
Muszę powiedzieć, że pomyliłem społeczność z sformułowaniem pytania. Kiedy zadawałem to pytanie, poprosiłem o sposób otwarcia pliku CSV UTF-8 w programie Excel bez żadnych problemów dla użytkownika, w sposób płynny i przejrzysty. Jednak użyłem złego sformułowania, prosząc o zrobienie tego automatycznie . Jest to bardzo mylące i koliduje z automatyzacją makr VBA. Są dwie odpowiedzi na te pytania, które doceniam najbardziej: pierwsza odpowiedź Alexa https://stackoverflow.com/a/6002338/166589 i zaakceptowałem tę odpowiedź; a drugi autorstwa Marka https://stackoverflow.com/a/6488070/166589które pojawiły się nieco później. Z punktu widzenia użyteczności Excel wydawał się nie mieć dobrej, przyjaznej dla użytkownika obsługi CSV UTF-8, więc uważam, że obie odpowiedzi są poprawne, i najpierw zaakceptowałem odpowiedź Alexa, ponieważ naprawdę stwierdziłem, że Excel nie był w stanie tego zrobić to przejrzyście. Z tym myliłem się tutaj automatycznie . Odpowiedź Marka promuje bardziej skomplikowany sposób dla bardziej zaawansowanych użytkowników, aby osiągnąć oczekiwany wynik. Obie odpowiedzi są świetne, ale odpowiedź Alexa nieco lepiej pasuje do mojego nieokreślonego pytania.
AKTUALIZACJA 2
Pięć miesięcy później po ostatniej edycji zauważyłem, że odpowiedź Alexa z jakiegoś powodu zniknęła. Naprawdę mam nadzieję, że to nie był problem techniczny i mam nadzieję, że nie będzie już dyskusji, która odpowiedź jest teraz lepsza. Przyjmuję więc odpowiedź Marka jako najlepszą.
\t
jako separator. Działa w ustawieniach Excela w języku angielskim i innym niż angielski. Można nacisnąć Ctrl-S
bez wybierania formatu pliku itp. Zachuje znaki Unicode.