it-swarm.com.de

Codierung einer Datei in Windows abrufen

Dies ist nicht wirklich eine Programmierfrage. Gibt es eine Befehlszeile oder ein Windows-Tool (Windows 7), um die aktuelle Kodierung einer Textdatei abzurufen? Sicher, ich kann eine kleine C # -App schreiben, aber ich wollte wissen, ob schon etwas eingebaut ist?

143
TheWebGuy

Öffnen Sie Ihre Datei mit dem alten alten Vanilla Notepad, der mit Windows geliefert wird.
Sie erhalten die Kodierung der Datei, wenn Sie auf "Speichern unter ..." klicken.
Es sieht so aus: enter image description here

Unabhängig von der standardmäßig ausgewählten Kodierung ist dies Ihre aktuelle Kodierung für die Datei .
Wenn es UTF-8 ist, können Sie es in ANSI ändern und auf Speichern klicken, um die Kodierung zu ändern (oder umgekehrt).

Ich weiß, dass es viele verschiedene Arten der Codierung gibt, aber dies war alles, was ich brauchte, als ich informiert wurde, dass unsere Exportdateien UTF-8 waren und ANSI benötigten. Es war ein einmaliger Export, so dass Notepad die Rechnung für mich passte.

Zu Ihrer Information: Nach meinem Verständnis ist "Unicode" (wie in Notepad aufgeführt) eine Fehlbezeichnung für UTF-16.
Weitere Informationen zur Notepad-Option "Unicode": Windows 7 - UTF-8 und Unicdoe

165
MikeTeeVee

Das (Linux) Befehlszeilenprogramm 'file' ist unter Windows über GnuWin32 verfügbar:

http://gnuwin32.sourceforge.net/packages/file.htm

Wenn Sie git installiert haben, befindet es sich unter C:\Programme\git\usr\bin. 

Beispiel:

 C:\Benutzer\SH\Downloads\SquareRoot> Datei * 
 _UpgradeReport_Files; Verzeichnis
 Debuggen; Verzeichnis
 Dauer.h; ASCII C++ - Programmtext mit CRLF-Zeilenabschlusszeichen 
 ipch; Verzeichnis
 main.cpp; ASCII C-Programmtext mit CRLF-Zeilenabschlüssen 
 Precision.txt; ASCII Text mit CRLF-Zeilenabschlusszeichen 
 Veröffentlichung; Verzeichnis
 Speed.txt; ASCII Text mit CRLF-Zeilenabschlusszeichen 
 SquareRoot.sdf; Daten
 SquareRoot.sln; UTF-8 Unicode-Text (mit Stückliste) mit CRLF-Zeilenabschlusszeichen 
 SquareRoot.sln.docstates.suo; PCX ver. 2.5 Bilddaten 
 SquareRoot.suo; CDF V2-Dokument, beschädigt: Zusammenfassungsinfo .__ kann nicht gelesen werden. SquareRoot.vcproj; XML-Dokumenttext 
 SquareRoot.vcxproj; XML-Dokumenttext 
 SquareRoot.vcxproj.filters; XML-Dokumenttext 
 SquareRoot.vcxproj.user; XML-Dokumenttext 
 squarerootmethods.h; ASCII C-Programmtext mit CRLF-Zeilenabschlüssen 
 UpgradeLog.XML; XML-Dokumenttext 

 C:\Benutzer\SH\Downloads\SquareRoot> Datei --mime-coding * 
 _UpgradeReport_Files; binär
 Debuggen; binär
 Dauer.h; us-ascii 
 ipch; binär
 main.cpp; us-ascii 
 Precision.txt; us-ascii 
 Veröffentlichung; binär
 Speed.txt; us-ascii 
 SquareRoot.sdf; binär
 SquareRoot.sln; utf-8 
 SquareRoot.sln.docstates.suo; binär
 SquareRoot.suo; CDF V2-Dokument, beschädigt: Zusammenfassungsinfobinary .__ kann nicht gelesen werden. SquareRoot.vcproj; us-ascii 
 SquareRoot.vcxproj; utf-8 
 SquareRoot.vcxproj.filters; utf-8 
 SquareRoot.vcxproj.user; utf-8 
 squarerootmethods.h; us-ascii 
 UpgradeLog.XML; us-ascii 
48
Sybren

Wenn Sie "git" oder "Cygwin" auf Ihrem Windows-Computer haben, gehen Sie zu dem Ordner, in dem sich Ihre Datei befindet, und führen Sie den Befehl aus:

file *

Dadurch erhalten Sie die Codierungsdetails aller Dateien in diesem Ordner.

39
George Ninan

Ein anderes Werkzeug, das ich für nützlich hielt: https://archive.codeplex.com/?p=encodingchecker EXE ist hier

19
user961954

Hier ist mein Ansatz, wie man die Unicode-Familie von Textkodierungen über die Stückliste erkennt. Die Genauigkeit dieser Methode ist gering, da diese Methode nur für Textdateien (insbesondere Unicode-Dateien) funktioniert, und standardmäßig ascii ist, wenn keine Stückliste vorhanden ist (wie bei den meisten Texteditoren wäre UTF8 der Standard, wenn Sie das HTTP/Webökosystem).

Update 2018: Ich empfehle diese Methode nicht mehr. Ich empfehle die Verwendung von file.exe von GIT oder * nix-Tools, wie von @Sybren empfohlen, und in einer späteren Antwort zeige ich, wie dies über PowerShell möglich ist .

# from https://Gist.github.com/zommarin/1480974
function Get-FileEncoding($Path) {
    $bytes = [byte[]](Get-Content $Path -Encoding byte -ReadCount 4 -TotalCount 4)

    if(!$bytes) { return 'utf8' }

    switch -regex ('{0:x2}{1:x2}{2:x2}{3:x2}' -f $bytes[0],$bytes[1],$bytes[2],$bytes[3]) {
        '^efbbbf'   { return 'utf8' }
        '^2b2f76'   { return 'utf7' }
        '^fffe'     { return 'unicode' }
        '^feff'     { return 'bigendianunicode' }
        '^0000feff' { return 'utf32' }
        default     { return 'ascii' }
    }
}

dir ~\Documents\WindowsPowershell -File | 
    select Name,@{Name='Encoding';Expression={Get-FileEncoding $_.FullName}} | 
    ft -AutoSize

Empfehlung: Dies kann einigermaßen gut funktionieren, wenn dir, ls oder Get-ChildItem nur bekannte Textdateien überprüft und Sie nur aus einer bekannten Liste von Tools nach "falschen Kodierungen" suchen. (Das heißt, SQL Management Studio verwendet standardmäßig UTF16, wodurch GIT auto-cr-lf für Windows gebrochen wurde, was seit vielen Jahren der Standard war.)

16
yzorg

Ich schrieb die Antwort # 4 (zum Zeitpunkt des Schreibens). In letzter Zeit habe ich git auf all meinen Computern installiert, daher verwende ich jetzt die Lösung von @ Sybren. Hier ist eine neue Antwort, die diese Lösung von Powershell praktisch macht (ohne git/usr/bin in den PATH zu setzen, was für mich zu viel Durcheinander ist).

Fügen Sie dies Ihrem profile.ps1 hinzu:

$global:gitbin = 'C:\Program Files\Git\usr\bin'
Set-Alias file.exe $gitbin\file.exe

Und verwendet wie: file.exe --mime-encoding *. Sie müssen den Befehl {muss .exe} _ enthalten, damit der PS-Alias ​​funktioniert. 

Wenn Sie Ihr PowerShell-Profil jedoch nicht anpassen.ps1, sollten Sie mit meinem beginnen: https://Gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0 Und es unter ~\Documents\WindowsPowerShell speichern. Die Verwendung auf einem Computer ohne Git ist sicher, aber es werden Warnungen ausgegeben, wenn git nicht gefunden wird.

Das .exe im Befehl ist auch, wie ich C:\WINDOWS\system32\where.exe von Powershell verwende. und viele andere OS-CLI-Befehle, die standardmäßig von Powershell verborgen werden, * shrug *.

3
yzorg

Sie können ein kostenloses Dienstprogramm namens Encoding Recognizer verwenden (erfordert Java). Sie finden es unter http://mindprod.com/products2.html#ENCODINGRECOGNISER

3
Ville

Ähnlich wie bei der oben mit Notepad aufgeführten Lösung können Sie die Datei auch in Visual Studio öffnen, wenn Sie diese verwenden. In Visual Studio können Sie "Datei> Erweiterte Speicheroptionen ..." auswählen.

Das Kombinationsfeld "Kodierung:" gibt an, welche Kodierung derzeit für die Datei verwendet wird. Es enthält sehr viel mehr Textkodierungen als Notepad, daher ist es nützlich, wenn Sie mit verschiedenen Dateien aus der ganzen Welt und anderen Bereichen arbeiten.

Genau wie Notepad können Sie auch die Kodierung in der Liste der Optionen ändern und die Datei dann speichern, nachdem Sie auf "OK" geklickt haben. Sie können die gewünschte Kodierung auch über die Option "Mit Kodierung speichern ..." im Dialogfeld "Speichern unter" auswählen (indem Sie auf den Pfeil neben der Schaltfläche "Speichern" klicken).

2
JaykeBird

Eine einfache Lösung könnte darin bestehen, die Datei in Firefox zu öffnen.

  1. Ziehen Sie die Datei in Firefox und legen Sie sie dort ab
  2. Klicken Sie mit der rechten Maustaste auf die Seite
  3. Wählen Sie "Seiteninformationen anzeigen"

und die Textkodierung wird im Fenster "Seiteninfo" angezeigt.

enter image description here

Hinweis: Wenn die Datei nicht im TXT-Format vorliegt, benennen Sie sie einfach in TXT um und versuchen Sie es erneut.

P.S. Weitere Informationen finden Sie in this Artikel.

0
Just Shadow

Die einzige Möglichkeit, die ich dazu gefunden habe, ist VIM oder Notepad ++.

0
Todd Partridge

Hier einige C-Codes für die zuverlässige Erkennung von Ascii, Bom und Utf8: https://unicodebook.readthedocs.io/guess_encoding.html

Nur ASCII, UTF-8 und Kodierungen, die eine Stückliste verwenden (UTF-7 mit Stückliste, UTF-8 mit Stückliste, UTF-16 und UTF-32) verfügen über zuverlässige Algorithmen, um die Kodierung eines Dokuments zu erhalten. Bei allen anderen Kodierungen müssen Sie auf statistische Heuristiken vertrauen.

0
js2010