Windows में किसी फ़ाइल की एन्कोडिंग प्राप्त करें


206

यह वास्तव में एक प्रोग्रामिंग प्रश्न नहीं है, क्या टेक्स्ट फ़ाइल की वर्तमान एन्कोडिंग पाने के लिए कमांड लाइन या विंडोज टूल (विंडोज 7) है? यकीन है कि मैं थोड़ा सी # ऐप लिख सकता हूं, लेकिन मैं जानना चाहता था कि क्या कुछ पहले से बनाया गया है?


12
विंडोज में एक फाइल की एन्कोडिंग लगता है कि शीर्षक क्या होना चाहिए। यदि आप पहले से नहीं जानते हैं, तो आप कभी भी कुछ के लिए अनुमान लगाने में सक्षम नहीं होंगे।
टॉम ब्लोडेट

जवाबों:


222

Windows के साथ आने वाले नियमित पुराने वेनिला नोटपैड का उपयोग करके अपनी फ़ाइल खोलें।
जब आप " इस रूप में सहेजें ... " पर क्लिक करते हैं, तो यह आपको फ़ाइल की एन्कोडिंग दिखाएगा ।
यह इस तरह दिखेगा: यहां छवि विवरण दर्ज करें

जो भी डिफ़ॉल्ट-चयनित एन्कोडिंग है, वही आपकी वर्तमान एन्कोडिंग फ़ाइल के लिए है।
यदि यह UTF-8 है, तो आप इसे ANSI में बदल सकते हैं और एन्कोडिंग (या वीज़ा-वर्सा) को बदलने के लिए सहेजें पर क्लिक कर सकते हैं।

मुझे लगता है कि कई अलग-अलग प्रकार के एन्कोडिंग हैं, लेकिन यह मुझे तब चाहिए था जब मुझे सूचित किया गया था कि हमारे निर्यात फाइलें UTF-8 में थीं और उन्हें ANSI की आवश्यकता थी। यह एक आजीवन निर्यात था, इसलिए नोटपैड ने मेरे लिए बिल फिट किया।

FYI करें: मेरी समझ से मुझे लगता है कि " यूनिकोड " (जैसा कि नोटपैड में सूचीबद्ध है) UTF-16 के लिए एक मिथ्या नाम है।
नोटपैड के " यूनिकोड " विकल्प पर यहां और अधिक : विंडोज 7 - यूटीएफ -8 और यूनिकोडो


1
@ एलेक्स, मैं विन -8 का उपयोग नहीं करता हूं। एक Google खोज करते हुए, मुझे यह लिंक मिला: विन -8 नोटपैड । मुझे आशा है कि आप इसे पा लेंगे क्योंकि मैं आपको विश्वास दिलाता हूं, यह अभी भी है।
माइकिटिवे

1
धन्यवाद, लेकिन विंडोज 8.1 पर निश्चित रूप से नोटपैड नामक कोई ऐप नहीं है। जब आप खोज में नोटपैड दर्ज करते हैं, तो "संपादक" दिखाई देता है। और यह है कि एंडोडिंग ड्रॉपडाउन नहीं है और इसके लिए कोई मेनू भी नहीं है
एलेक्स

4
यह विधि उन फ़ाइलों के लिए काम नहीं करती है जो नोटपैड को खोलने के लिए बहुत बड़ी हैं। और यह सीमा नोटपैड ++ जैसे अन्य संपादकों की तुलना में बहुत तेजी से पहुंची है। मेरे विंडोज 8.1 में नोटपैड है। % विंडर% \ system32 \ notepad.exe में देखें?
फाबियान केसलर

3
नोटपैड विंडोज 8 और विंडोज 10. में मौजूद है
एलन बी

6
नोटपैड विंडोज के सभी संस्करणों में विंडोज 3 के बाद से स्थापित है।
जीन-फ्रांस्वा लार्वायर

64

(Linux) कमांड-लाइन टूल 'फ़ाइल' विंडोज पर GnuWin32 के माध्यम से उपलब्ध है:

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

यदि आपने git इंस्टॉल किया है, तो यह C: \ Program Files \ git \ usr \ bin में स्थित है।

उदाहरण:

    C: \ Users \ SH \ Downloads \ SquareRoot> फ़ाइल *
    _UpgradeReport_Files; निर्देशिका
    डिबग; निर्देशिका
    duration.h; ASCII C ++ प्रोग्राम टेक्स्ट, CRLF लाइन टर्मिनेटर के साथ
    ipch; निर्देशिका
    main.cpp; ASCII C प्रोग्राम टेक्स्ट, CRLF लाइन टर्मिनेटर के साथ
    Precision.txt; ASCII पाठ, CRLF लाइन टर्मिनेटर के साथ
    रिलीज; निर्देशिका
    Speed.txt; ASCII पाठ, CRLF लाइन टर्मिनेटर के साथ
    SquareRoot.sdf; डेटा
    SquareRoot.sln; CRLF लाइन टर्मिनेटर के साथ UTF-8 यूनिकोड (BOM के साथ) पाठ
    SquareRoot.sln.docstates.suo; पीसीएक्स वेरी। 2.5 छवि डेटा
    SquareRoot.suo; CDF V2 दस्तावेज़, भ्रष्ट: सारांश जानकारी नहीं पढ़ सकता
    SquareRoot.vcproj; XML दस्तावेज़ पाठ
    SquareRoot.vcxproj; XML दस्तावेज़ पाठ
    SquareRoot.vcxproj.filters; XML दस्तावेज़ पाठ
    SquareRoot.vcxproj.user; XML दस्तावेज़ पाठ
    squarerootmethods.h; ASCII C प्रोग्राम टेक्स्ट, CRLF लाइन टर्मिनेटर के साथ
    UpgradeLog.XML; XML दस्तावेज़ पाठ

    C: \ Users \ SH \ Downloads \ SquareRoot> फ़ाइल - समय-एन्कोडिंग *
    _UpgradeReport_Files; बाइनरी
    डिबग; बाइनरी
    duration.h; हमें-ascii
    ipch; बाइनरी
    main.cpp; हमें-ascii
    Precision.txt; हमें-ascii
    रिलीज; बाइनरी
    Speed.txt; हमें-ascii
    SquareRoot.sdf; बाइनरी
    SquareRoot.sln; utf-8
    SquareRoot.sln.docstates.suo; बाइनरी
    SquareRoot.suo; CDF V2 दस्तावेज़, भ्रष्ट: सारांश उल्लंघन को नहीं पढ़ सकता है
    SquareRoot.vcproj; हमें-ascii
    SquareRoot.vcxproj; utf-8
    SquareRoot.vcxproj.filters; utf-8
    SquareRoot.vcxproj.user; utf-8
    squarerootmethods.h; हमें-ascii
    UpgradeLog.XML; हमें-ascii

1
ध्यान दें कि आपको शायद इसके लिए git 2.x की आवश्यकता है, मेरे पास यह git 1.9.5 के साथ नहीं है
jakub.g

मेरी फाइल के लिए यह "बाइनरी" कहता है :(
barbara.post

1
बेसिक ऑपरेशन के लिए कमांड लाइन पर वापस आना अविश्वसनीय है, यह 2017 है, लेकिन यह ठीक है।
टॉड पार्ट्रीज

1
दूसरे उत्तर की तरह , आप साइबरविनfile में भी कमांड का उपयोग कर सकते हैं । विंडोज के लिए कोई भी POSIX टूलसेट होना चाहिए । file
२०

यदि आपने विंडोज़ के लिए गिट स्थापित किया है, तो इसमें GIT BASH (bash emulator) शामिल है, जिसमें बदले में 'file' कमांड शामिल है। बस इसका इस्तेमाल किया और यह काम करता है। यह अगले उत्तर में भी उल्लिखित है ...
अमीर काट्ज

61

यदि आपके विंडोज मशीन पर "गिट" या "सिगविन" है, तो उस फ़ोल्डर पर जाएं जहां आपकी फ़ाइल मौजूद है और कमांड निष्पादित करें:

file *

यह आपको उस फोल्डर की सभी फाइलों का एन्कोडिंग विवरण देगा।


अपने जवाब में जोड़ने से, आप केवल विशिष्ट फ़ाइल में रुचि रखने वाले हैं, तो आप उपयोग कर सकते हैं ग्रेप आदेश के परिणामों को फ़िल्टर करने file *आदेश
खलील ebram

केवल आँख बंद करके चलने वाली फ़ाइल कमांड के बजाय, इस प्रश्न का उत्तर देने वाली पूर्ण कमांड file --mime-encodingफ़ाइल के लिए एन्कोडिंग प्राप्त करने के लिए है
smac89

23

एक और उपकरण जो मुझे उपयोगी लगा: https://archive.codeplex.com/?p=encodingchecker EXE यहाँ पाया जा सकता है


4
कई फ़ाइलों का विश्लेषण करने के लिए वास्तव में उपयोगी है
एरिक बोनोट

1
बहुत बड़ी फ़ाइलों के साथ भी त्वरित उत्तर (जैसा कि कोई उम्मीद करेगा)।
फाबियान केसलर

1
वर्तमान विंडोज 10. पर काम करता है
barbara.post

2
यह पता नहीं लगा सकते हैं कि उस पृष्ठ पर exe फ़ाइल कहाँ है। क्या लिंक पुराना है?
क्रिस्टोफ

1
@MarkDeven मैंने उत्तर में
निर्वासन के

17

यहाँ मेरा है कि कैसे BOM के माध्यम से पाठ एनकोडिंग के यूनिकोड परिवार का पता लगाएं। इस पद्धति की सटीकता कम है, क्योंकि यह विधि केवल पाठ फ़ाइलों (विशेष रूप से यूनिकोड फ़ाइलों) पर काम करती है, और asciiजब कोई बीओएम मौजूद नहीं होता है तो चूक होती है (जैसे अधिकांश पाठ संपादकों, डिफ़ॉल्ट होगा UTF8यदि आप HTTP / वेब पारिस्थितिक तंत्र से मेल खाना चाहते हैं )।

अद्यतन २०१ no : मैं अब इस विधि की अनुशंसा नहीं करता। मैं GIT से फाइल का उपयोग करने की सलाह देता हूं या * निब्रेन द्वारा अनुशंसित के रूप में * निक्स उपकरण, और मैं दिखाता हूं कि बाद में जवाब में पावरशेल के माध्यम से कैसे करें

# 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

अनुशंसा: यदि यह केवल ज्ञात पाठ फ़ाइलों की जाँच करता है , या जब आप केवल टूल की ज्ञात सूची से "खराब एनकोडिंग" की तलाश कर रहे हों dir, तो यह यथोचित कार्य कर सकता है । (यानी SQL प्रबंधन स्टूडियो UTF16 के लिए डिफॉल्ट करता है, जिसने विंडोज के लिए GIT ऑटो-cr-lf को तोड़ दिया, जो कई वर्षों के लिए डिफ़ॉल्ट था।)lsGet-ChildItem


Get-FileEncodingमेरे सिस्टम पर मौजूद नहीं है। क्या यह एक कस्टम cmdlet है?
जेवियर पोइनास

पॉशकोड पर कई विविधताएं हैं Get-FileEncoding। मैंने अजगर और नोडज से भी पंचकोश की समीक्षा की है, लेकिन यह छोटा संस्करण मेरे उपयोग के लिए 80/20 (99/1 से अधिक) की तरह हिट करता है। यदि आप अन्य लोगों की फ़ाइलों की मेजबानी कर रहे हैं, तो मेरा सुझाव है कि आप fileSyben के उत्तर ( stackoverflow.com/a/34766140/195755 ) या किसी अन्य उत्पादन-गुणवत्ता यूनिकोड डिकोडर से कमांड का उपयोग करें ।
yzorg

यह जोड़ा जाना चाहिए कि यह विधि केवल तभी काम करती है जब BOM मौजूद है ... जो हमेशा ऐसा नहीं होता है
येपाकाई

@Yepeekai अंतिम पंक्ति defaultएन्कोडिंग है (जब कोई बीओएम नहीं है)। XML, JSON और JavaScript के लिए डिफ़ॉल्ट UTF8 है, लेकिन आपका माइलेज भिन्न हो सकता है।
yzorg

@yzorg: लेकिन यह एक मस्तिष्क मृत तरीका है। आप केवल उपयोगकर्ता से झूठ बोल रहे हैं। कम से कम अधिकांश पार्सर्स एक शिक्षित अनुमान लगाते हैं। यदि आप अनुमान नहीं लगा सकते हैं कि सिर्फ एक त्रुटि है और उन्हें बताएं कि आपके कोड का उपयोग करने के लिए एक BOM आवश्यक है (और फिर अन्य उपयोग करें, होशियार उपकरण पहले से मौजूद हैं)।
एड एस।

7

मैंने # 4 उत्तर (लिखने के समय) लिखा था। लेकिन हाल ही में मैंने अपने सभी कंप्यूटरों में git इंस्टॉल किया है, इसलिए अब मैं @ Sybren के समाधान का उपयोग करता हूं। यहाँ एक नया उत्तर है जो उस समाधान को पावरथेल (PATH में सभी git / usr / बिन को डाले बिना, जो मेरे लिए बहुत अव्यवस्थित है) से काम लेता है।

इसे अपने में जोड़ें profile.ps1:

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

और की तरह इस्तेमाल किया: file.exe --mime-encoding *। आपको कार्य करने के लिए PS उपनाम के लिए कमांड में .exe शामिल करना होगा

लेकिन अगर आप अपने PowerShell profile.ps1 को कस्टमाइज़ नहीं करते हैं, तो मेरा सुझाव है कि आप मेरा साथ शुरू करें : https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1b3b08eb7c08be0 और इसे सेव करें ~\Documents\WindowsPowerShell। यह बिना गिट के कंप्यूटर पर उपयोग करने के लिए सुरक्षित है, लेकिन गिट नहीं पाए जाने पर चेतावनी लिखेंगे।

.Exe आदेश में भी मैं कैसे उपयोग है C:\WINDOWS\system32\where.exepowershell से; और कई अन्य ओएस सीएलआई कमांड जो "शिल्पी द्वारा डिफ़ॉल्ट रूप से छिपे हुए" हैं, * श्रग *।


1
या आप fileias file.exe\ _ (/) _ / ¯ के बजाय file.exe को अपने उपनाम के रूप में उपयोग कर सकते हैं
ferrell_io

@ferrell_io TL; DR: PS .NET पर आधारित है और .NET में फ़ाइल स्टैटिक क्लास है, और PS के पास आम EXE के साथ पर्याप्त भ्रामक ओवरलोड हैं जो मैं। ex को Win EXE: dir | where Size -lt 10000vs से अलग करने के लिए .exe का उपयोग करता हूं where.exe git
yzorg

@ferrell_io मैं where.exeइसे wherePS से अलग करने के लिए उपयोग करता हूं , जो कि एक अंतर्निहित उपनाम है Where-Object। उदाहरण: where.exe git* vs ls . | where Size -lt 10000
yzorg

@ferrell_io तो मैं file.exeबनाम .NET स्थिर वर्ग के लिए एक ही पैटर्न का उपयोग करता हूं , जिसे आपको उसी स्क्रिप्ट की आवश्यकता हो सकती है जो एन्कोडिंग का पता लगा रही है। उदाहरण: [File]::SetCreationTime("readme.md", [DateTime]::Now)
yzorg

6

एक सरल समाधान फ़ायरफ़ॉक्स में फ़ाइल खोल सकता है।

  1. फ़ाइल को फ़ायरफ़ॉक्स में खींचें और छोड़ें
  2. पेज पर राइट क्लिक करें
  3. "पृष्ठ जानकारी देखें" चुनें

और टेक्स्ट एन्कोडिंग "पेज इन्फो" विंडो पर दिखाई देगा।

यहां छवि विवरण दर्ज करें

नोट: यदि फ़ाइल txt प्रारूप में नहीं है, तो इसे txt में फिर से नाम दें और पुनः प्रयास करें।

PS अधिक जानकारी के लिए इस लेख को देखें।


4

Git इंस्टॉल करें (विंडोज पर आपको git bash कंसोल का उपयोग करना होगा)। प्रकार:

file *   

वर्तमान निर्देशिका में सभी फ़ाइलों के लिए, या

file */*   

सभी उपनिर्देशिकाओं में फ़ाइलों के लिए


3

आप एक मुफ्त उपयोगिता का उपयोग कर सकते हैं जिसे एन्कोडिंग रिकॉग्निज़र कहा जाता है (जावा की आवश्यकता होती है)। आप इसे http://mindprod.com/products2.html#ENCODINGRECOGNISER पर पा सकते हैं


2

नोटपैड के साथ ऊपर सूचीबद्ध समाधान के समान, आप विज़ुअल स्टूडियो में फ़ाइल भी खोल सकते हैं, यदि आप इसका उपयोग कर रहे हैं। विज़ुअल स्टूडियो में, आप "फ़ाइल> उन्नत सहेजें विकल्प ..." का चयन कर सकते हैं

"एन्कोडिंग:" कॉम्बो बॉक्स आपको विशेष रूप से बताएगा कि वर्तमान में कौन सा एन्कोडिंग फ़ाइल के लिए उपयोग किया जा रहा है। इसमें नोटपैड की तुलना में बहुत अधिक पाठ एन्कोडिंग सूचीबद्ध हैं, इसलिए यह दुनिया भर की विभिन्न फाइलों से निपटने के लिए उपयोगी है और जो भी हो।

नोटपैड की तरह, आप वहां विकल्पों की सूची से एन्कोडिंग को भी बदल सकते हैं, और फिर "ओके" मारने के बाद फ़ाइल को सहेज सकते हैं। आप Save As डायलॉग में "Save with Encoding ..." विकल्प के माध्यम से इच्छित एन्कोडिंग का भी चयन कर सकते हैं (Save बटन के आगे तीर पर क्लिक करके)।


अच्छा है, लेकिन जब मैं फ़ाइल को विजुअल स्टूडियो के साथ खोलने की कोशिश करता हूं, तो यह हमेशा संबंधित पाठ संपादक (इस तरह के फ़ाइल एक्सटेंशन के लिए नोटपैड ++) में फ़ाइल को खोलता है।
बारबरा.पोस्ट

@ barbara.post जो आपके विज़ुअल स्टूडियो सेटिंग्स के साथ कुछ करना चाहेगा, मुझे लगता है। मैं विज़ुअल स्टूडियो में किसी भी प्रकार की किसी भी सादे पाठ फ़ाइलों तक पहुँचने में सक्षम रहा हूँ। आपने शायद इसे नोटपैड ++ पर जाने के लिए कहा है जब भी यह उस एक्सटेंशन के साथ एक फ़ाइल का सामना करता है। कम से कम मेरे विचार तो यही हैं।
जयकेबर्ड

2

विश्वसनीय एससीआई, बम और utf8 का पता लगाने के लिए कुछ सी कोड यहाँ: https://unicodebook.readthedocs.io/guess_encoding.html

केवल एएससीआईआई, यूटीएफ -8 और बीओएम के साथ बीओएम (यूटीएफ -7, बीओएम के साथ यूटीएफ -8, यूटीएफ -16 और यूटीएफ -32) का उपयोग करते हुए एनकोडिंग के पास दस्तावेज़ के एन्कोडिंग प्राप्त करने के लिए विश्वसनीय एल्गोरिदम हैं। अन्य सभी एन्कोडिंग के लिए, आपको आंकड़ों के आधार पर अनुमानों पर भरोसा करना होगा।

संपादित करें:

किसी C # उत्तर का एक पॉवरशेल संस्करण: किसी भी फ़ाइल के एनकोडिंग को खोजने का प्रभावी तरीका । केवल हस्ताक्षर (बूम) के साथ काम करता है।

# 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

1
@jeasoft धन्यवाद। मैंने .net वर्तमान निर्देशिका को सेट करने के लिए एक फिक्स में जोड़ा। stackoverflow.com/questions/11246068/…
js2010

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.