To nie jest tak naprawdę pytanie programistyczne, czy istnieje wiersz poleceń lub narzędzie Windows (Windows 7), aby uzyskać bieżące kodowanie pliku tekstowego? Pewnie, że mogę napisać małą aplikację C #, ale chciałem wiedzieć, czy coś jest już wbudowane?
206
Odpowiedzi:
Otwórz plik za pomocą zwykłego starego waniliowego Notatnika dostarczanego z systemem Windows.
Po kliknięciu „ Zapisz jako ... ” wyświetli się kodowanie pliku .
Będzie to wyglądać tak:
Niezależnie od tego, jakie jest domyślnie wybrane kodowanie, takie jest twoje obecne kodowanie pliku.
Jeśli jest to UTF-8, możesz go zmienić na ANSI i kliknąć Zapisz, aby zmienić kodowanie (lub odwrotnie).
Zdaję sobie sprawę, że istnieje wiele różnych rodzajów kodowania, ale to wszystko, czego potrzebowałem, kiedy zostałem poinformowany, że nasze pliki eksportowe znajdują się w UTF-8 i wymagały ANSI. To był jednorazowy eksport, więc Notatnik pasował do mnie.
FYI: Z mojego zrozumienia uważam, że „ Unicode ” (jak wymieniono w Notatniku) jest błędem dla UTF-16.
Więcej informacji o opcji „ Unicode ” Notatnika : Windows 7 - UTF-8 i Unicdoe
źródło
„Plik” wiersza polecenia (Linux) jest dostępny w systemie Windows za pośrednictwem GnuWin32:
http://gnuwin32.sourceforge.net/packages/file.htm
Jeśli masz zainstalowany git, znajduje się on w folderze C: \ Program Files \ git \ usr \ bin.
Przykład:
źródło
file
polecenia w cygwin . Każdy zestaw narzędzi POSIX dla Windows powinien miećfile
.Jeśli masz „git” lub „Cygwin” na komputerze z systemem Windows, przejdź do folderu, w którym znajduje się plik, i wykonaj polecenie:
To da ci szczegóły kodowania wszystkich plików w tym folderze.
źródło
file *
poleceniafile --mime-encoding
uzyskanie kodowania plikuInne narzędzie, które uznałem za przydatne: https://archive.codeplex.com/?p=encodingchecker EXE można znaleźć tutaj
źródło
Oto moje podejście do wykrywania rodziny kodowań tekstowych Unicode za pomocą BOM. Dokładność tej metody jest niska, ponieważ ta metoda działa tylko na plikach tekstowych (w szczególności plikach Unicode) i domyślnie jest stosowana,
ascii
gdy nie ma BOM (jak większość edytorów tekstowych, domyślnie byłoby,UTF8
jeśli chcesz dopasować ekosystem HTTP / web) ).Aktualizacja 2018 : Nie polecam już tej metody. Polecam użycie file.exe z narzędzi GIT lub * nix, zgodnie z zaleceniami @Sybren, i pokażę, jak to zrobić za pomocą programu PowerShell w późniejszej odpowiedzi .
Zalecenie: To może pracować dość dobrze, jeśli
dir
,ls
lubGet-ChildItem
tylko sprawdza znane pliki tekstowe, a gdy tylko szukasz kodowań „złych” Z listy znanych narzędzi. (tzn. domyślnie SQL Management Studio to UTF16, który złamał GIT auto-cr-lf dla Windows, który był domyślny przez wiele lat).źródło
Get-FileEncoding
wydaje się nie istnieć w moim systemie. Czy to niestandardowe polecenie cmdlet?Get-FileEncoding
kodu poshcode. Sprawdziłem nawet kod punycode z python i nodejs, ale ta mała wersja trafiła w 80/20 dla mojego użycia (bardziej jak 99/1). Jeśli przechowujesz pliki innych osób, sugeruję użyciefile
polecenia z odpowiedzi Sybena ( stackoverflow.com/a/34766140/195755 ) lub innego dekodera Unicode jakości produkcyjnej.default
(gdy nie ma BOM). W przypadku XML, JSON i JavaScript wartością domyślną jest UTF8, ale przebieg może się różnić.Napisałem odpowiedź nr 4 (w momencie pisania). Ale ostatnio zainstalowałem git na wszystkich moich komputerach, więc teraz używam rozwiązania @ Sybren. Oto nowa odpowiedź, która sprawia, że to rozwiązanie jest przydatne z PowerShell (bez umieszczania całego git / usr / bin w PATH, co jest dla mnie zbyt dużym bałaganem).
Dodaj to do
profile.ps1
:I używany jak:
file.exe --mime-encoding *
. Państwo musi zawierać .exe w komendzie PS alias do pracy.Ale jeśli nie dostosujesz swojego profilu PowerShell.ps1, sugeruję zacząć od mojego: https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0 i zapisz go w
~\Documents\WindowsPowerShell
. Można go bezpiecznie używać na komputerze bez git, ale zapisuje ostrzeżenia, gdy git nie zostanie znaleziony.Plik .exe w poleceniu jest także używany w programie
C:\WINDOWS\system32\where.exe
PowerShell; oraz wiele innych komend CLI systemu operacyjnego, które są „domyślnie ukryte” przez PowerShell, * wzruszenie ramion *.źródło
file
jako aliasu do file.exe zamiastfile.exe
¯ \ _ (ツ) _ / ¯dir | where Size -lt 10000
vswhere.exe git
.where.exe
do odróżnienia go odwhere
PS, który jest wbudowanym aliasemWhere-Object
. Przykład:where.exe git*
vsls . | where Size -lt 10000
file.exe
klasy statycznej vs .NET, która może być potrzebna w tym samym skrypcie wykrywającym kodowanie. Przykład:[File]::SetCreationTime("readme.md", [DateTime]::Now)
.Prostym rozwiązaniem może być otwarcie pliku w przeglądarce Firefox.
a kodowanie tekstu pojawi się w oknie „Informacje o stronie”.
Uwaga: jeśli plik nie jest w formacie txt, po prostu zmień jego nazwę na txt i spróbuj ponownie.
PS Aby uzyskać więcej informacji, zobacz ten artykuł.
źródło
Zainstaluj git (w systemie Windows musisz użyć konsoli git bash). Rodzaj:
dla wszystkich plików w bieżącym katalogu lub
dla plików we wszystkich podkatalogach
źródło
Możesz użyć bezpłatnego narzędzia o nazwie Recoding Recognizer (wymaga java). Można go znaleźć na stronie http://mindprod.com/products2.html#ENCODINGRECOGNISER
źródło
Podobnie do rozwiązania wymienionego powyżej w Notatniku, możesz również otworzyć plik w Visual Studio, jeśli go używasz. W Visual Studio możesz wybrać „Plik> Zaawansowane opcje zapisywania ...”
Pole kombi „Kodowanie:” powie ci, które kodowanie jest obecnie używane dla pliku. Zawiera o wiele więcej kodowań tekstowych niż Notatnik, więc jest to przydatne, gdy mamy do czynienia z różnymi plikami z całego świata i cokolwiek innego.
Podobnie jak Notatnik, możesz również zmienić kodowanie z listy dostępnych tam opcji, a następnie zapisać plik po naciśnięciu „OK”. Możesz także wybrać odpowiednie kodowanie za pomocą opcji „Zapisz z kodowaniem ...” w oknie dialogowym Zapisz jako (klikając strzałkę obok przycisku Zapisz).
źródło
Tutaj jest trochę kodu C do niezawodnego wykrywania ascii, bom's i utf8: https://unicodebook.readthedocs.io/guess_encoding.html
EDYTOWAĆ:
Wersja PowerShell odpowiedzi C # z: Skuteczny sposób na znalezienie kodowania dowolnego pliku . Działa tylko z podpisami (boms).
źródło
Jedynym sposobem, który udało mi się to zrobić, jest VIM lub Notepad ++.
źródło