यह वास्तव में एक प्रोग्रामिंग प्रश्न नहीं है, क्या टेक्स्ट फ़ाइल की वर्तमान एन्कोडिंग पाने के लिए कमांड लाइन या विंडोज टूल (विंडोज 7) है? यकीन है कि मैं थोड़ा सी # ऐप लिख सकता हूं, लेकिन मैं जानना चाहता था कि क्या कुछ पहले से बनाया गया है?
यह वास्तव में एक प्रोग्रामिंग प्रश्न नहीं है, क्या टेक्स्ट फ़ाइल की वर्तमान एन्कोडिंग पाने के लिए कमांड लाइन या विंडोज टूल (विंडोज 7) है? यकीन है कि मैं थोड़ा सी # ऐप लिख सकता हूं, लेकिन मैं जानना चाहता था कि क्या कुछ पहले से बनाया गया है?
जवाबों:
Windows के साथ आने वाले नियमित पुराने वेनिला नोटपैड का उपयोग करके अपनी फ़ाइल खोलें।
जब आप " इस रूप में सहेजें ... " पर क्लिक करते हैं, तो यह आपको फ़ाइल की एन्कोडिंग दिखाएगा ।
यह इस तरह दिखेगा:
जो भी डिफ़ॉल्ट-चयनित एन्कोडिंग है, वही आपकी वर्तमान एन्कोडिंग फ़ाइल के लिए है।
यदि यह UTF-8 है, तो आप इसे ANSI में बदल सकते हैं और एन्कोडिंग (या वीज़ा-वर्सा) को बदलने के लिए सहेजें पर क्लिक कर सकते हैं।
मुझे लगता है कि कई अलग-अलग प्रकार के एन्कोडिंग हैं, लेकिन यह मुझे तब चाहिए था जब मुझे सूचित किया गया था कि हमारे निर्यात फाइलें UTF-8 में थीं और उन्हें ANSI की आवश्यकता थी। यह एक आजीवन निर्यात था, इसलिए नोटपैड ने मेरे लिए बिल फिट किया।
FYI करें: मेरी समझ से मुझे लगता है कि " यूनिकोड " (जैसा कि नोटपैड में सूचीबद्ध है) UTF-16 के लिए एक मिथ्या नाम है।
नोटपैड के " यूनिकोड " विकल्प पर यहां और अधिक : विंडोज 7 - यूटीएफ -8 और यूनिकोडो
(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
file
में भी कमांड का उपयोग कर सकते हैं । विंडोज के लिए कोई भी POSIX टूलसेट होना चाहिए । file
यदि आपके विंडोज मशीन पर "गिट" या "सिगविन" है, तो उस फ़ोल्डर पर जाएं जहां आपकी फ़ाइल मौजूद है और कमांड निष्पादित करें:
file *
यह आपको उस फोल्डर की सभी फाइलों का एन्कोडिंग विवरण देगा।
file *
आदेश
file --mime-encoding
फ़ाइल के लिए एन्कोडिंग प्राप्त करने के लिए है
एक और उपकरण जो मुझे उपयोगी लगा: https://archive.codeplex.com/?p=encodingchecker EXE यहाँ पाया जा सकता है
यहाँ मेरा है कि कैसे 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 को तोड़ दिया, जो कई वर्षों के लिए डिफ़ॉल्ट था।)ls
Get-ChildItem
Get-FileEncoding
मेरे सिस्टम पर मौजूद नहीं है। क्या यह एक कस्टम cmdlet है?
Get-FileEncoding
। मैंने अजगर और नोडज से भी पंचकोश की समीक्षा की है, लेकिन यह छोटा संस्करण मेरे उपयोग के लिए 80/20 (99/1 से अधिक) की तरह हिट करता है। यदि आप अन्य लोगों की फ़ाइलों की मेजबानी कर रहे हैं, तो मेरा सुझाव है कि आप file
Syben के उत्तर ( stackoverflow.com/a/34766140/195755 ) या किसी अन्य उत्पादन-गुणवत्ता यूनिकोड डिकोडर से कमांड का उपयोग करें ।
default
एन्कोडिंग है (जब कोई बीओएम नहीं है)। XML, JSON और JavaScript के लिए डिफ़ॉल्ट UTF8 है, लेकिन आपका माइलेज भिन्न हो सकता है।
मैंने # 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.exe
powershell से; और कई अन्य ओएस सीएलआई कमांड जो "शिल्पी द्वारा डिफ़ॉल्ट रूप से छिपे हुए" हैं, * श्रग *।
file
ias file.exe
\ _ (/) _ / ¯ के बजाय file.exe को अपने उपनाम के रूप में उपयोग कर सकते हैं
dir | where Size -lt 10000
vs से अलग करने के लिए .exe का उपयोग करता हूं where.exe git
।
where.exe
इसे where
PS से अलग करने के लिए उपयोग करता हूं , जो कि एक अंतर्निहित उपनाम है Where-Object
। उदाहरण: where.exe git*
vs ls . | where Size -lt 10000
file.exe
बनाम .NET स्थिर वर्ग के लिए एक ही पैटर्न का उपयोग करता हूं , जिसे आपको उसी स्क्रिप्ट की आवश्यकता हो सकती है जो एन्कोडिंग का पता लगा रही है। उदाहरण: [File]::SetCreationTime("readme.md", [DateTime]::Now)
।
एक सरल समाधान फ़ायरफ़ॉक्स में फ़ाइल खोल सकता है।
और टेक्स्ट एन्कोडिंग "पेज इन्फो" विंडो पर दिखाई देगा।
नोट: यदि फ़ाइल txt प्रारूप में नहीं है, तो इसे txt में फिर से नाम दें और पुनः प्रयास करें।
PS अधिक जानकारी के लिए इस लेख को देखें।
आप एक मुफ्त उपयोगिता का उपयोग कर सकते हैं जिसे एन्कोडिंग रिकॉग्निज़र कहा जाता है (जावा की आवश्यकता होती है)। आप इसे http://mindprod.com/products2.html#ENCODINGRECOGNISER पर पा सकते हैं
नोटपैड के साथ ऊपर सूचीबद्ध समाधान के समान, आप विज़ुअल स्टूडियो में फ़ाइल भी खोल सकते हैं, यदि आप इसका उपयोग कर रहे हैं। विज़ुअल स्टूडियो में, आप "फ़ाइल> उन्नत सहेजें विकल्प ..." का चयन कर सकते हैं
"एन्कोडिंग:" कॉम्बो बॉक्स आपको विशेष रूप से बताएगा कि वर्तमान में कौन सा एन्कोडिंग फ़ाइल के लिए उपयोग किया जा रहा है। इसमें नोटपैड की तुलना में बहुत अधिक पाठ एन्कोडिंग सूचीबद्ध हैं, इसलिए यह दुनिया भर की विभिन्न फाइलों से निपटने के लिए उपयोगी है और जो भी हो।
नोटपैड की तरह, आप वहां विकल्पों की सूची से एन्कोडिंग को भी बदल सकते हैं, और फिर "ओके" मारने के बाद फ़ाइल को सहेज सकते हैं। आप Save As डायलॉग में "Save with Encoding ..." विकल्प के माध्यम से इच्छित एन्कोडिंग का भी चयन कर सकते हैं (Save बटन के आगे तीर पर क्लिक करके)।
विश्वसनीय एससीआई, बम और 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