Hey, czy ktoś się orientuje czy da się w jakiś prosty sposób sprawdzić w jaki sposób jest kodowana treść w danym pliku CSV (excel)?
Chodzi o to by ustalić czy jest to windows-coś tam, czy UTF-8 czy Ansi czy jeszcze coś innego?
Z góry dziękuję za pomoc!
Jeśli to na Windows, to otwórz w Notatniku i zrób "Zapisz jako". Pokazuje się tam UTF-8, ANSI.
Jeśli to Linux, to użyj hexdump i wszystko jasne. :)
zz napisał(a):
Jeśli to na Windows
Tak, chodzi o windows.
zz napisał(a):
otwórz w Notatniku i zrób "Zapisz jako". Pokazuje się tam UTF-8, ANSI.
Ale czy na pewno to jest kodowanie obecnego pliku czy może domyślne kodowanie przy zapisywaniu? Bo mam małą wątpliwość...
Jak otworzę plik w excelu i zrobię zapisz jako to również mam możliwość takiego podglądu (bodajże w narzędziach(?)).
Mam jeszcze jedno pytanie: jeśli plik jest zapisany np. w ANSI, albo jakimś windowsowskim stylu to czy jeśli będę próbował go odczytać i zapisać programem, który czyta UTF-8 to czy będzie wszystko ok? Bo zdaje się UTF-8 jest uniwersalny (?!?)
pozdrawiam.
Jeśli to na Windows, to otwórz w Notatniku i zrób "Zapisz jako". Pokazuje się tam UTF-8, ANSI.
Ale to wykryje UTF-8 tylko, jeżeli w pliku jest BOM.
Ważna rzecz - w teorii nie da się w 100% poprawnością wykryć kodowania. Kodowanie musi być określone, bo określone znaki są POPRAWNE niezależnie od kodowania (no, prawie, w UTF-ach nie muszą z tego co kojarzę (nigdy bliżej nie interesowałem się sposobem zapisu wielobajtowym)). Są one inne z Twoimi osobistymi oczekiwaniami, ale są poprawne.
Poniższy tekst zakłada, że chcesz to robić automatycznie w jakimś programie:
Jeżeli wiesz, że oczekujesz akurat POLSKICH znaków - wtedy po prostu szukasz znaków o określonych kodach (ó jest np. takie samo dla ISO-8859-2 i Windows-1250/CP-1250, ale ąśź są bardzo charakterystyczne). Gorzej z UTF-8 bez BOM (bo BOM łatwo sprawdzić, ale wiele programów będzie miało z tym problem) - wtedy znaki mogą być zarówno jednobajtowe jak i dwubajtowe - trzeba by było znowu poszukać charakterystycznych zestawów bajtów. Raczej w CSV-ce nie będziesz oczekiwał takich bajtów w ISO/Win, które w UTF składałyby się na jeden znak.
W Google w sumie nie brakuje gotowych bibliotek do takich zastosowań - "detect encoding nazwa_języka" i znajdziesz.