এটি সত্যই কোনও প্রোগ্রামিংয়ের প্রশ্ন নয়, কোনও পাঠ্য ফাইলের বর্তমান এনকোডিং পেতে কোনও কমান্ড লাইন বা উইন্ডোজ সরঞ্জাম (উইন্ডোজ 7) রয়েছে কি? অবশ্যই আমি একটু সি # অ্যাপ লিখতে পারি তবে আমি জানতে চেয়েছিলাম সেখানে ইতিমধ্যে অন্তর্নির্মিত কিছু আছে কিনা?
এটি সত্যই কোনও প্রোগ্রামিংয়ের প্রশ্ন নয়, কোনও পাঠ্য ফাইলের বর্তমান এনকোডিং পেতে কোনও কমান্ড লাইন বা উইন্ডোজ সরঞ্জাম (উইন্ডোজ 7) রয়েছে কি? অবশ্যই আমি একটু সি # অ্যাপ লিখতে পারি তবে আমি জানতে চেয়েছিলাম সেখানে ইতিমধ্যে অন্তর্নির্মিত কিছু আছে কিনা?
উত্তর:
উইন্ডোজের সাথে আসা নিয়মিত পুরানো ভ্যানিলা নোটপ্যাড ব্যবহার করে আপনার ফাইলটি খুলুন।
আপনি " সংরক্ষণ করুন ... " ক্লিক করার সময় এটি আপনাকে ফাইলের এনকোডিং দেখাবে ।
এটি দেখতে এরকম দেখাবে:
ডিফল্ট-নির্বাচিত এনকোডিং যাই হোক না কেন, ফাইলটির জন্য এটিই আপনার বর্তমান এনকোডিং।
এটি যদি ইউটিএফ -8 হয়, আপনি এএনএসআইতে এটি পরিবর্তন করতে পারেন এবং এনকোডিং (বা ভিসা-বিপরীতে) পরিবর্তন করতে সংরক্ষণ ক্লিক করুন।
আমি বুঝতে পেরেছি যে বিভিন্ন ধরণের এনকোডিং রয়েছে, তবে আমাদের রফতানির ফাইলগুলি ইউটিএফ -8-এ রয়েছে এবং এএনএসআইয়ের দরকার পড়ে যখন আমাকে জানানো হয়েছিল তখন এটাই আমার দরকার ছিল। এটি এককালীন রফতানি ছিল, সুতরাং নোটপ্যাডটি আমার জন্য বিলটি ফিট করে।
এফওয়াইআই: আমার উপলব্ধি থেকে আমি মনে করি " ইউনিকোড " (নোটপ্যাডে তালিকাবদ্ধ হিসাবে) ইউটিএফ -16 এর একটি ভুল নাম।
নোটপ্যাডের " ইউনিকোড " বিকল্পে আরও এখানে : উইন্ডোজ 7 - ইউটিএফ -8 এবং ইউনিকডো
(লিনাক্স) কমান্ড-লাইন সরঞ্জাম 'ফাইল' উইন্ডোতে GnuWin32 এর মাধ্যমে পাওয়া যায়:
http://gnuwin32.sourceforge.net/packages/file.htm
আপনি যদি গিট ইনস্টল করেন তবে এটি সি: \ প্রোগ্রাম ফাইল \ গিট \ ইউএসআর \ বিনে অবস্থিত।
উদাহরণ:
সি: \ ব্যবহারকারী \ এসএইচ \ ডাউনলোডগুলি \ স্কোয়ার রুট> ফাইল * _UpgradeReport_Files; ডিরেক্টরি ডিবাগ; ডিরেক্টরি duration.h; সিএসআরএফ লাইন টার্মিনেটর সহ ASCII সি ++ প্রোগ্রাম পাঠ্য ipch; ডিরেক্টরি main.cpp; সিআরএলএফ লাইন টার্মিনেটর সহ ASCII সি প্রোগ্রামের পাঠ্য Precision.txt; সিআরএলএফ লাইন টার্মিনেটর সহ ASCII পাঠ্য মুক্তি; ডিরেক্টরি Speed.txt; সিআরএলএফ লাইন টার্মিনেটর সহ ASCII পাঠ্য SquareRoot.sdf; উপাত্ত SquareRoot.sln; ইউটিএফ -8 ইউনিকোড (বিওএম সহ) পাঠ্য, সিআরএলএফ লাইন টার্মিনেটর সহ SquareRoot.sln.docstates.suo; পিসিএক্স ভার। 2.5 চিত্রের ডেটা SquareRoot.suo; সিডিএফ ভি 2 ডকুমেন্ট, দূষিত: সংক্ষিপ্তসার তথ্য পড়তে পারে না SquareRoot.vcproj; এক্সএমএল নথি পাঠ্য SquareRoot.vcxproj; এক্সএমএল নথি পাঠ্য SquareRoot.vcxproj.filters; এক্সএমএল নথি পাঠ্য SquareRoot.vcxproj.user; এক্সএমএল নথি পাঠ্য squarerootmethods.h; সিআরএলএফ লাইন টার্মিনেটর সহ ASCII সি প্রোগ্রামের পাঠ্য UpgradeLog.XML; এক্সএমএল নথি পাঠ্য সি: \ ব্যবহারকারীরা \ এসএইচ \ ডাউনলোডগুলি \ স্কোয়ার রুট> ফাইল - মাইম-এনকোডিং * _UpgradeReport_Files; বাইনারি ডিবাগ; বাইনারি duration.h; US-ASCII ipch; বাইনারি main.cpp; US-ASCII Precision.txt; US-ASCII মুক্তি; বাইনারি Speed.txt; US-ASCII SquareRoot.sdf; বাইনারি SquareRoot.sln; UTF-8 SquareRoot.sln.docstates.suo; বাইনারি SquareRoot.suo; সিডিএফ ভি 2 ডকুমেন্ট, দুর্নীতিগ্রস্থ: সংক্ষিপ্ত ইনফোবাইনারি পড়তে পারে না 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
file
কমান্ডটি ব্যবহার করতে পারেন । উইন্ডোজের জন্য কোনও পসিক্স টুলসেট থাকা উচিত । file
আপনার উইন্ডোজ মেশিনে যদি "গিট" বা "সাইগউইন" থাকে তবে আপনার ফোল্ডারে যেখানে উপস্থিত রয়েছে সেখানে গিয়ে কমান্ডটি কার্যকর করুন:
file *
এটি আপনাকে সেই ফোল্ডারের সমস্ত ফাইলের এনকোডিং বিশদ দেবে।
file --mime-encoding
আর একটি সরঞ্জাম যা আমি দরকারী পেয়েছিলাম: https://archive.codeplex.com/?p=encodingchecker EXE এখানে পাওয়া যাবে
বিওএমের মাধ্যমে কীভাবে পাঠ্য এনকোডিংগুলির ইউনিকোড পরিবারটি সনাক্ত করতে পারি তা আমার এখানে। এই পদ্ধতির যথার্থতা কম, কারণ এই পদ্ধতিটি কেবল পাঠ্য ফাইলগুলিতে (বিশেষত ইউনিকোড ফাইলগুলি) কাজ করে এবং ascii
কোনও বিওএম উপস্থিত না থাকায় ডিফল্ট থাকে (বেশিরভাগ পাঠ্য সম্পাদকের মতো, UTF8
আপনি যদি এইচটিটিপি / ওয়েব বাস্তুতন্ত্রের সাথে মিল রাখতে চান তবে ডিফল্ট হবে) )।
আপডেট 2018 : আমি আর এই পদ্ধতির সুপারিশ করি না। আমি @ সাইব্রেনের পরামর্শ অনুসারে জিআইটি বা * নিক্স সরঞ্জামগুলি থেকে ফাইল.এক্সি ব্যবহার করার পরামর্শ দিচ্ছি এবং পরবর্তী উত্তরে পাওয়ারশেলের মাধ্যমে কীভাবে এটি করব তা আমি দেখাই ।
# 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
, ls
অথবা Get-ChildItem
পরিচিত পাঠ্য ফাইল শুধুমাত্র চেক, এবং আপনি শুধুমাত্র সরঞ্জামের একটি পরিচিত তালিকা থেকে "খারাপ এনকোডিং" খুঁজছি। (অর্থাত্ এসকিউএল ম্যানেজমেন্ট স্টুডিওটি ইউটিএফ 16 এর ডিফল্ট, যা উইন্ডোজের জন্য জিআইটি অটো-সিআর-এলএফ ভেঙে দেয়, যা বহু বছরের জন্য ডিফল্ট ছিল))
Get-FileEncoding
আমার সিস্টেমে উপস্থিত নেই বলে মনে হচ্ছে। এটি কি একটি কাস্টম সেমিডলেট?
Get-FileEncoding
poshcode উপর। আমি পাইথন এবং নোডেজগুলি থেকে পুণিকোডও পর্যালোচনা করেছি, তবে এই ছোট সংস্করণটি আমার ব্যবহারের জন্য 80/20 হিট করে (আরও 99/1 এর মতো)। আপনি অন্য লোকের ফাইল হোস্ট করছেন যদি আমি আপনি ব্যবহার সুপারিশ file
Syben এর উত্তর (থেকে কমান্ড stackoverflow.com/a/34766140/195755 ) অথবা অন্য প্রকাশনা মানের ইউনিকোড ডিকোডার।
default
এনকোডিং করছে (যখন বিওএম নেই)। এক্সএমএল, জেএসএন এবং জাভাস্ক্রিপ্টের জন্য ডিফল্টটি ইউটিএফ 8 হয় তবে আপনার মাইলেজটি আলাদা হতে পারে।
আমি # 4 উত্তর লিখেছিলাম (লেখার সময়)। তবে ইদানীং আমি আমার সমস্ত কম্পিউটারে গিট ইনস্টল করেছি, সুতরাং এখন আমি @ সাইবারেনের সমাধানটি ব্যবহার করি। এখানে একটি নতুন উত্তর যা সমাধানটিকে পাওয়ারশেল থেকে কার্যকর করে তোলে (সমস্ত গিট / ইউএসআর / বিনকে প্যাথএইচ না করে, যা আমার পক্ষে খুব বেশি গোলমাল)।
এটি আপনার যুক্ত করুন profile.ps1
:
$global:gitbin = 'C:\Program Files\Git\usr\bin'
Set-Alias file.exe $gitbin\file.exe
আর মত ব্যবহৃত: file.exe --mime-encoding *
। পিএস ওরফে কাজের জন্য আপনাকে কমান্ডটিতে .exe অন্তর্ভুক্ত করতে হবে ।
তবে আপনি যদি নিজের পাওয়ারশেল প্রোফাইলটি কাস্টমাইজ না করেন তবে আমি আপনাকে আমার সাথে শুরু করার পরামর্শ দিই: https://gist.github.com/yzorg/8215221/8e38fd722a3dfc526bbe4668d1f3b08eb7c08be0
এবং এটিকে সংরক্ষণ করুন ~\Documents\WindowsPowerShell
। গিট ছাড়াই কম্পিউটারে ব্যবহার করা নিরাপদ তবে গিটটি পাওয়া না গেলে সতর্কতা লিখবে।
.Exe কমান্ড এছাড়াও আমি ব্যবহার C:\WINDOWS\system32\where.exe
PowerShell থেকে; এবং অন্যান্য অনেকগুলি ওএস সি এল আই কমান্ড যা পাওয়ারশেল, "শ্রোগ * দ্বারা" ডিফল্টরূপে লুকানো "থাকে।
file
নামটি ফাইলের জন্য ব্যবহার করতে পারেন ex file.exe
\ _ (ツ) _ / ¯
dir | where Size -lt 10000
বনাম থেকে PS কে আলাদা করতে .exe ব্যবহার করি where.exe git
।
where.exe
এটি where
PS থেকে আলাদা করতে ব্যবহার করি যা এর জন্য অন্তর্নির্মিত একটি উরফ Where-Object
। উদাহরণ: where.exe git*
বনাম ls . | where Size -lt 10000
file.exe
বনাম নেট স্ট্যাটিক ক্লাসের জন্য একই প্যাটার্নটি ব্যবহার করি , যা আপনার এনকোডিং সনাক্তকরণকারী একই স্ক্রিপ্টে থাকতে পারে। উদাহরণ: [File]::SetCreationTime("readme.md", [DateTime]::Now)
।
ফায়ারফক্সে একটি সহজ সমাধান ফাইলটি খুলতে পারে।
এবং পাঠ্য এনকোডিংটি "পৃষ্ঠা তথ্য" উইন্ডোতে উপস্থিত হবে।
দ্রষ্টব্য: ফাইলটি যদি txt বিন্যাসে না থাকে তবে কেবল এটির নামকরণ টিএসটি করুন এবং আবার চেষ্টা করুন।
পিএস আরও তথ্যের জন্য এই নিবন্ধটি দেখুন।
আপনি এনকোডিং সনাক্তকারী (জাভা প্রয়োজন) নামে একটি নিখরচায় ইউটিলিটি ব্যবহার করতে পারেন। আপনি এটি http://mindprod.com/products2.html#ENCODINGRECOGNISER এ খুঁজে পেতে পারেন
নোটপ্যাডের সাথে উপরে উল্লিখিত সমাধানের অনুরূপ, আপনি যদি এটি ব্যবহার করেন তবে আপনি ভিজুয়াল স্টুডিওতেও ফাইলটি খুলতে পারেন। ভিজ্যুয়াল স্টুডিওতে, আপনি "ফাইল> অ্যাডভান্সড সেভ অপশন ..." নির্বাচন করতে পারেন
"এনকোডিং:" কম্বো বাক্স আপনাকে বিশেষত বলবে যে ফাইলটির জন্য বর্তমানে কোন এনকোডিং ব্যবহৃত হচ্ছে। এটিতে নোটপ্যাডের চেয়ে অনেক বেশি লিখিত এনকোডিং রয়েছে, তাই বিশ্বজুড়ে এবং অন্য যে কোনও কিছু থেকে বিভিন্ন ফাইলের সাথে কাজ করার সময় এটি কার্যকর হয় it's
নোটপ্যাডের মতো আপনিও সেখানে বিকল্পগুলির তালিকা থেকে এনকোডিং পরিবর্তন করতে পারেন এবং "ওকে" চাপার পরে ফাইলটি সংরক্ষণ করতে পারেন। আপনি সংরক্ষণ করুন ডায়ালগের "সংরক্ষণ করুন উইন্ডোডিং ..." বিকল্পের মাধ্যমে (সেভ বোতামের পাশের তীরটি ক্লিক করে) আপনি যে এনকোডিং চান তাও নির্বাচন করতে পারেন।
নির্ভরযোগ্য ascii, বোমস এবং utf8 সনাক্তকরণের জন্য এখানে কিছু সি কোড রয়েছে: https://unicodebook.readthedocs.io/guess_encoding.html
কেবলমাত্র এএসসিআইআই, ইউটিএফ -8 এবং একটি বিওএম ব্যবহার করে এনকোডিংগুলি (বিওএমের সাথে ইউটিএফ -7, বিওএমের সাথে ইউটিএফ -8, ইউটিএফ -16, এবং ইউটিএফ -32) নথির এনকোডিং পাওয়ার জন্য নির্ভরযোগ্য অ্যালগরিদম রয়েছে। অন্যান্য সমস্ত এনকোডিংয়ের জন্য, আপনাকে পরিসংখ্যানের ভিত্তিতে হুরিস্টিকসের উপর বিশ্বাস রাখতে হবে।
সম্পাদনা করুন:
এর থেকে সি # উত্তরের একটি পাওয়ারশেল সংস্করণ: যে কোনও ফাইলের এনকোডিংটি কার্যকর করার উপায় । কেবল স্বাক্ষর (বমস) নিয়ে কাজ করে।
# 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