Dit is niet echt een programmeervraag, is er een opdrachtregel of Windows-tool (Windows 7) om de huidige codering van een tekstbestand te krijgen? Natuurlijk kan ik een kleine C #-app schrijven, maar ik wilde weten of er al iets is ingebouwd?
1, Autoriteit 100%
Open uw bestand met behulp van gewone oude vanille-notitieblok die wordt geleverd met ramen.
Het toont u de codering van het bestand wanneer u op “Opslaan als … ” klikt.
Het zal er zo uitzien:
Wat de standaard geselecteerde codering ook is, dat is wat uw huidige codering is voor het bestand.
Als het UTF-8 is, kunt u het wijzigen in ANSI en klikt u op Opslaan om de codering (of visa-versa) te wijzigen.
Ik realiseer me dat er veel verschillende soorten codering zijn, maar dit was alles wat ik nodig had toen ik op de hoogte was dat onze exportbestanden in UTF-8 waren en ze hadden ANSI nodig. Het was een OneDime-export, dus Kladblok fit de rekening voor mij.
FYI: Van mijn begrip denk ik “Unicode ” (zoals vermeld in Kladblok) is een verkeerde nieuw voor UTF-16.
Meer hier op notepad’s “Unicode ” optie: Windows 7 – UTF -8 en unicdoe
2, Autoriteit 32%
Als u “git” of “Cygwin” op uw Windows-machine hebt, gaat u naar de map waar uw bestand aanwezig is en de opdracht uitvalt:
file *
Hiermee geeft u de coderingsdetails van alle bestanden in die map.
3, Autoriteit 27%
Het (Linux)-opdrachtregel Tool ‘FILE’ is beschikbaar op Windows via GNUWIN32:
http://gnuwin32.sourceforge.net/packages/file.htm
Als je git hebt geïnstalleerd, staat het in C:\Program Files\git\usr\bin.
Voorbeeld:
C:\Users\SH\Downloads\SquareRoot>file * _UpgradeReport_Files; map debuggen; map duur.h; ASCII C++ programmatekst, met CRLF-regelafsluitingen ipch; map hoofd.cpp; ASCII C-programmatekst, met CRLF-regelafsluitingen Precisie.txt; ASCII-tekst, met CRLF-lijnafsluitingen Uitgave; map Snelheid.txt; ASCII-tekst, met CRLF-lijnafsluitingen SquareRoot.sdf; gegevens SquareRoot.sln; UTF-8 Unicode (met stuklijst) tekst, met CRLF-regelafsluitingen SquareRoot.sln.docstates.suo; PCX ver. 2.5 beeldgegevens SquareRoot.suo; CDF V2-document, beschadigd: kan samenvattingsinformatie niet lezen SquareRoot.vcproj; XML-documenttekst SquareRoot.vcxproj; XML-documenttekst SquareRoot.vcxproj.filters; XML-documenttekst SquareRoot.vcxproj.gebruiker; XML-documenttekst vierkantswortelmethoden.h; ASCII C-programmatekst, met CRLF-regelafsluitingen UpgradeLog.XML; XML-documenttekst C:\Users\SH\Downloads\SquareRoot>file --mime-encoding * _UpgradeReport_Files; binair debuggen; binair duur.h; ons-ascii ipch; binair hoofd.cpp; ons-ascii Precisie.txt; ons-ascii Uitgave; binair Snelheid.txt; ons-ascii SquareRoot.sdf; binair SquareRoot.sln; utf-8 SquareRoot.sln.docstates.suo; binair Squareroot.Suo; CDF V2-document, corrupt: kan geen infobinaire samenvatting lezen 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
4, Autoriteit 9%
Nog een tool die ik nuttigs heb gevonden: https://archive.codeplex.com/?p=encoderingchecker
EXE is te vinden hier
5, Autoriteit 7%
Hier kunt u hoe u de Unicode-familie van tekstcoderingen via BOM kunt detecteren. De nauwkeurigheid van deze methode is laag, omdat deze methode alleen werkt op tekstbestanden (specifiek Unicode-bestanden) en standaardinstellingen op ascii
wanneer er geen bom aanwezig is (zoals de meeste teksteditors, zou de standaardinstelling UTF8
Als u overeenkomt met het http / web-ecosysteem).
UPDATE 2018 : Ik raad deze methode niet langer aan. Ik raad aan bestand.exe te gebruiken van git of * nix-tools zoals aanbevolen door @Sybren, en Ik laat zien hoe dat te doen via PowerShell in een later antwoord .
# 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
Aanbeveling: dit kan redelijk goed werken als de dir
, ls
of Get-ChildItem
alleen bekende tekstbestanden controleert, en wanneer u bent alleen op zoek naar “slechte coderingen” uit een bekende lijst met tools. (d.w.z. SQL Management Studio is standaard ingesteld op UTF16, waardoor GIT auto-cr-lf voor Windows werd verbroken, wat jarenlang de standaard was.)
Antwoord 6, autoriteit 4%
Installeer git (op Windows moet je de git bash console gebruiken). Typ:
file *
voor alle bestanden in de huidige map , of
file */*
voor de bestanden in alle submappen
Antwoord 7, autoriteit 4%
Een eenvoudige oplossing zou kunnen zijn om het bestand in Firefox te openen.
- Sleep het bestand en zet het neer in Firefox
- Klik met de rechtermuisknop op de pagina
- Selecteer “Pagina-info bekijken”
en de tekstcodering verschijnt in het venster “Pagina-info”.
Opmerking:Als het bestand niet in txt-indeling is, hernoemt u het gewoon naar txt en probeert u het opnieuw.
P.S. Zie ditvoor meer informatie. artikel.
8
Vergelijkbaar met de bovenstaande oplossing met Kladblok, kunt u ook het bestand in Visual Studio openen, als u dat gebruikt. In Visual Studio kunt u “File & GT; Geavanceerde Opslaan Opties selecteren …”
De “Codering:” Combo-box vertelt u specifiek welke codering momenteel wordt gebruikt voor het bestand. Het heeft veel meer tekstcoderingen die daar zijn vermeld dan Kladblok, dus het is handig bij het omgaan met verschillende bestanden van over de hele wereld en wat dan ook.
Net als Kladblok, kunt u ook de codering van de lijst met opties daar wijzigen en vervolgens het bestand opslaan na het raken van “OK”. U kunt ook de gewenste codering selecteren via de optie “Opslaan met codering …” in het dialoogvenster opslaan (door op de pijl naast de knop Opslaan te klikken).
9
De enige manier waarop ik dit heb gevonden, is vim of notepad ++.
10
Wat C-code hier voor betrouwbare ASCII, BOM’s en UTF8 Detectie: https: //unicodebook.readthedocs .io / gis_encodering.html
Alleen ASCII, UTF-8 en coderingen met behulp van een BOM (UTF-7 met BOM, UTF-8 met BOM,
UTF-16 en UTF-32) hebben betrouwbare algoritmen om de codering van een document te krijgen.
Voor alle andere coderingen moet u heuristieken vertrouwen op basis van statistieken.
EDIT:
Een PowerShell-versie van een C # Antwoord van: Effectieve manier om een bestand te vinden Codering . Werkt alleen met handtekeningen (boms).
# get-encoding.ps1
param([Parameter(ValueFromPipeline=$True)] $filename)
begin {
# set .net current directoy
[Environment]::CurrentDirectory = (pwd).path
}
process {
$reader = [System.IO.StreamReader]::new($filename,
[System.Text.Encoding]::default,$true)
$peek = $reader.Peek()
$encoding = $reader.currentencoding
$reader.close()
[pscustomobject]@{Name=split-path $filename -leaf
BodyName=$encoding.BodyName
EncodingName=$encoding.EncodingName}
}
.\get-encoding chinese8.txt
Name BodyName EncodingName
---- -------- ------------
chinese8.txt utf-8 Unicode (UTF-8)
get-childitem -file | .\get-encoding
Antwoord 11
Op zoek naar een Node.js/npm-oplossing? Probeer encoding-checker:
npm install -g encoding-checker
Gebruik
Usage: encoding-checker [-p pattern] [-i encoding] [-v]
Options:
--help Show help [boolean]
--version Show version number [boolean]
--pattern, -p, -d [default: "*"]
--ignore-encoding, -i [default: ""]
--verbose, -v [default: false]
Voorbeelden
Verkrijg codering van alle bestanden in de huidige map:
encoding-checker
Retourcodering van alle md
-bestanden in de huidige map:
encoding-checker -p "*.md"
Krijg codering van alle bestanden in de huidige map en zijn submappen (zal behoorlijk wat tijd vergen voor grote mappen; lijkt niet te reageren):
encoding-checker -p "**"
Raadpleeg voor meer voorbeelden de npm docuof de officiële repository.
Antwoord 12
File Encoding Checker is een GUI-tool waarmee u de tekstcodering van een of meer bestanden kunt valideren. De tool kan de codering weergeven voor alle geselecteerde bestanden, of alleen de bestanden die niet de codering hebben die u opgeeft.
Bestandscoding Checker vereist .NET 4 of hoger om te worden uitgevoerd.