Mam wiele plików zip, w których występują błędy kodowania dla niemieckich umlautów (äüöĘÜÖß). Pojawiają się zarówno w pliku filename.zip, jak również w dołączonych katalogach i plikach takich jak ten:
- Fünf = Fu╠ênf
- Räuber = Ra╠êuber
- Überfall = U╠êberfall
i tak dalej. Zwykle używam Linuksa, ale z powodu tych problemów próbowałem również maszyny wirtualnej z systemem Windows7, ale powoduje to ten sam bałagan kodowania. W Linuksie bawiłem się z convmv i detox, ale bez powodzenia.
Kiedy używam
- convmv -f iso-8859-1 -t utf8 --replace --notest -r *
Dostaję komunikat „Pomijanie, już UTF-8”.
Masz jakieś przemyślenia na ten temat?
find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest
Znajduje pliki z aktualnego katalogu do przodu i uruchamia convmv osobno dla każdego pliku. Nazwa pliku jest zapisywana jako lista nieaktualna.Odpowiedzi:
Powodem, dla którego pojawia się ostrzeżenie „już UTF-8” jest to, że te ciągi naprawdę są już w UTF-8. Znak „ü” został zakodowany w stylu OSX jako „u”, po którym następowały dwa bajty „\ xCC” i „\ x88”. Te dwa bajty razem składają się na reprezentację UTF-8 dla \ u0308, łączną diaeresis.
Jeśli spojrzeć na stronie kodowej 437 listą tutaj , zobaczysz znak \ XCC jako „╠” i znaku \ x88 „E”.
Cokolwiek używasz do wyświetlania tych sekwencji znaków, nie interpretuje ich jako UTF-8, a raczej jako CP437.
Szybki dowód, jeśli czytasz ruby, który wyświetla się zgodnie z oczekiwaniami w moim terminalu UTF-8:
źródło
Domyślam się, że to system plików, który próbujesz zdekompresować lub zmodyfikować pliki. FAT32 nie polubi twoich umlautów. Spróbuj skopiować te pliki z dysku flash (lub tego, co masz), a następnie rozpakuj plik zip, aby zobaczyć, jakie znaki tworzą nazwy plików.
Zarówno NTFS (Windows), jak i Ext4 (mennica) nie powinny mieć problemu z kodowaniem nazw.
Kodowanie nazw samych plików zip w systemie FAT32 najprawdopodobniej nie ulegnie zmianie ani nie zostanie naprawione po skopiowaniu ich do odpowiedniego systemu plików, ale podkatalogi podczas dekompresji powinny być w porządku.
źródło
Najpierw zauważ, że kodowanie znaków jest własną sekcją piekła. W świecie Windows nadal istnieje paskudny dualizm między UTF-8 a M $ graniem głupim przez długi czas i naleganiem na ISO-8859 (zgadnij, kto to wymyślił). Jak wspomniano powyżej, prawie na pewno ma coś wspólnego z systemem plików. Moje rozwiązanie nie jest techniczne, ale działa dla mnie od wielu lat:
Moja osobista porada dotycząca nazw plików jest zawsze taka sama: po prostu trzymaj się znaków alfanumerycznych oraz myślnika (-) i podkreślenia (_). Napisz umlaute jako ae, ue i oe. Nie używaj spacji i innych znaków specjalnych. Na początku jest to trochę niewygodne, ale pozwoli zaoszczędzić wiele bólu w nieoczekiwanych miejscach.
Na marginesie: tak, to rodzaj paskudnego „hacka”, ale jeśli pracujesz na różnych platformach, często musisz wracać do ostatniego wspólnego mianownika. Uznałbyś za rzecz oczywistą, że coś takiego jak kodowanie znaków byłoby twardym standardem, ale okazuje się, że standardy są trudne do uzyskania. Ten XKCD całkiem ładnie podsumowuje
źródło