Zmienić domyślne kodowanie programu Excel na UTF-8?

25

Używam różnych narzędzi do regularnego przygotowywania danych do Internetu. Jeden etap wymaga ode mnie otwarcia pliku CSV w programie Excel, wprowadzenia zmian i zapisania pliku.

Czy istnieje sposób, aby zmusić program Excel do zaakceptowania kodowania UTF-8 i zapisania jego plików z tym kodowaniem?

Dizzley
źródło
1
Aby to wyjaśnić, chciałbym zmienić ustawienie, aby program Excel domyślnie przyjmował, że plik wejściowy to UTF-8. Jak wspomniano poniżej, LibreOffice / OpenOffice robi to.
Dizzley
Jeśli tak naprawdę nie masz do czynienia ze znakami Unicode, rozważę użycie oprogramowania pośredniego do konwersji wszystkich plików CSV na ASCII, a następnie otwarcia ich w programie Excel.
Vassile
1
Powiązane pytanie tutaj, ale nie dokładnie takie samo.
hhh

Odpowiedzi:

15

Odpowiedziałem na podobne pytanie w Domyślne kodowanie znaków w Kreatorze tekstu Excel? .

Znalazłem odpowiedź na temat Zmienianie domyślnego typu źródła importu tekstu w programie Excel .

  1. W edytorze rejestru przejdź do HKEY_CURRENT_USER> Oprogramowanie> Microsoft> Biuro> [Wersja Excel tutaj - prawdopodobnie najwyższa liczba w tym folderze]> Excel> Opcje
  2. kliknij prawym przyciskiem myszy po prawej stronie i wybierz Nowy> DWORD
  3. nazwij element DefaultCPG i zapisz
  4. kliknij DefaultCPG prawym przyciskiem myszy i wybierz Modyfikuj
  5. ustaw bazę na dziesiętną
  6. wprowadź kod pokazany w kreatorze Excela (dla UTF-8 jest to 65001)
  7. Kliknij OK.

Jak mówi Vasille w komentarzu do tego pytania, jeśli plik nie jest w rzeczywistości w formacie UTF-8, technicznie możesz chcieć przekonwertować znaki w pliku na odpowiednie kodowanie przed otwarciem w programie Excel. Jednak dla moich celów UTF-8 wykonuje wystarczająco dobrą robotę, wyświetlając nieuszkodzone znaki.

Robert H.
źródło
3
Czy są jakieś powody, aby tego nie robić? Dlaczego nie jest to domyślne zachowanie programu Excel? --- Mój zespół często zajmuje się zestawami danych zawierającymi obce znaki i zastanawiam się, czy istnieje jakiś powód, aby nie wykonywać tej czynności na każdym z naszych komputerów.
user1318135,
3
To niestety nie działało na moim komputerze. Pliki nadal otwarte z domyślnym kodowaniem (Win 7, Office 2016).
user1318135,
8
Nie działa również na moje, Wygraj 10 Office 2016
Phuah Yee Keat
2
Nie ma kości. Excel zachowuje się tak głupio jak zawsze. Można by oczekiwać, że taka oczywista funkcja będzie dostępna poprzez preferencje użytkownika w oprogramowaniu tak dojrzałym jak Excel.
Aaron Bramson,
4

Jednym z łatwych sposobów zmiany kodowania Excel ANSI na UTF-8 jest otwarcie pliku .csv w notatniku, a następnie wybranie Plik> Zapisz jako. Teraz na dole zobaczysz kodowanie ustawione na ANSI, zmień go na UTF-8 i zapisz plik jako nowy plik, a następnie gotowe.

Moudiz
źródło
Będę z tym eksperymentować. Jednym z moich problemów jest konsekwentne otwieranie plików w prawidłowym kodowaniu, więc nie otrzymuję danych w dwóch kodowaniach w jednym pliku wyników. Wtedy trudno jest to naprawić. Naprawdę chciałbym, żeby Excel pozwolił mi lepiej wybrać kodowanie pliku wejściowego.
Dizzley
3

Wydaje się, że oprogramowanie Microsoft Office wymaga znaku bajtu .

  1. Za pomocą Notepad ++ przekonwertuj CSV za pomocą menu: Kodowanie -> Konwertuj na UTF8-BOM.

  2. Za pomocą sednarzędzia Unix, dostępnego w cmder lub Git dla Windows . Zobacz Dodawanie BOM do plików UTF-8 .

    sed -i '1s/^/\xef\xbb\xbf/' file.csv
    

  • Testowane z Excel 2016
  • To właśnie oznaczało avwtp w ich odpowiedzi .
Cristian
źródło
2

Musisz użyć tej File > Importopcji i rozpocząć od pustego dokumentu i określićUTF-8

wprowadź opis zdjęcia tutaj

ale nie jest to optymalne ustawienie, aby było to ustawienie domyślne dla wszystkich plików, w każdym razie niepotrzebne jest obracanie plików wokół Dysku Google lub LibreOffice. Wartości domyślne są po prostu źle wybrane, a niemożność zmiany jest irytująca.

Związane z

  1. Jak ustawić kodowanie znaków podczas otwierania programu Excel, ale nie ma opcji zmiany wartości domyślnych, aby wszystkie pliki były automatycznie otwierane za pomocą UTF-8 zamiast formatu Macintosh w OSX

  2. Jak zmienić domyślną opcję pliku na UTF-8 z dala od opcji pliku Macintosh w Apple.SE.

hhh
źródło
0

Wcześniej rozwiązałem podobny problem. Bezskutecznie, ale możesz użyć LibreOffice , który jest domyślnie UTF-8.

Lluser
źródło
LibreOffice jest do tego bardzo przydatny. Czasami jednak mam makra VBA do uruchomienia. Dzięki Lluser
Dizzley
0

Jest Excel addin dostępny tutaj do pracy z plikami CSV Unicode, który powinien Ci pomóc.

Oto uwaga dewelopera Jaimona Mathew'a:

Program Excel traktuje pliki .csv jak pliki tekstowe i podczas normalnego zapisywania zamienia wszystkie znaki Unicode na „?”. Jeśli chcesz zachować znaki Unicode, musisz zapisać plik jako „Tekst Unicode (* .txt)”, który jest plikiem rozdzielanym tabulatorami. Ponieważ nie mogłem znaleźć żadnego istniejącego rozwiązania do zachowania znaków Unicode w formacie CSV, pomyślałem, że dam temu szansę w tworzeniu dodatku do programu Excel, aby to zrobić.

1

Karan
źródło
0

To nie jest najlepsze rozwiązanie, ale jest to opcja: prześlij plik Excel na dysk Google, otwórz go za pomocą Google Tabs i pobierz jako plik csv. To zadziałało dla mnie.

Viktor
źródło
5
To nie odpowiada na pytanie, jak zmienić kodowanie dokumentu Excel.
Ramhound,
Oczywiście po otwarciu pliku CSV w programie Excel tracisz formatowanie komórki, więc niektóre ciągi znaków liczbowych są konwertowane na liczby całkowite.
Dizzley
0

Zakładając, że masz dostępną powłokę uniksową (Cygwin), dołączam na początku pliku csv trochę 3-znakowy identyfikator Unicode (UTF-8), a następnie czyta się dobrze w programie Excel, a co ważniejsze, jest poprawnie przetwarzany jako dane wejściowe za pomocą VB Excel automatyzacja.

UTF-8.txt

EFBBBF << Edycja szesnastkowa do pliku 3-znakowego.

cat UTF-8.txt file-to-use.csv> nowy_plik.csv

avwtp
źródło
1
(1) Czy możesz opisać, jak / dlaczego to działa? (2) Czy możesz dokładnie opisać , jak utworzyć ten UTF-8.txtplik?
Scott
Sugeruję użycie edytora szesnastkowego i wpisanie sekwencji 3 znaków. Dlaczego to działa, nie mam pojęcia. Wymyśliłem to rozwiązanie, biorąc istniejący plik csv UTF-8, zmieniając jego nazwę na txt, importując go do Excela (jak sugerowano w innych wątkach), zapisując jako CSV z wtyczką Unicode (inny wątek), a następnie robiąc różnicę binarną z dwóch plików. Jedyną różnicą była 3-znakowa sekwencja początkowa.
avwtp
Zobacz ten wątek, dlaczego to działa [link] ( stackoverflow.com/questions/6002256/… )
avwtp 30.04.2019