উইন্ডোজ কমান্ড লাইনে ইউনিকোড অক্ষর কীভাবে ব্যবহার করবেন?


316

আমাদের টিম ফাউন্ডেশন সার্ভারে (টিএফএস) একটি প্রকল্প রয়েছে যা এতে একটি অ-ইংরেজি অক্ষর (š) রয়েছে। বিল্ড-সম্পর্কিত কয়েকটি জিনিস স্ক্রিপ্ট করার চেষ্টা করার সময় আমরা কোনও সমস্যায় পড়েছি - আমরা কমান্ড-লাইন সরঞ্জামগুলিতে š চিঠিটি পাস করতে পারি না । কমান্ড প্রম্পট বা অন্য কী তা গোলযোগ করে না , এবং tf.exe ইউটিলিটি নির্দিষ্ট প্রকল্পটি খুঁজে পায় না।

আমি .bat ফাইলের (এএনএসআই, ইউটিএফ -8 বিওএম সহ এবং এর বাইরে ) বিভিন্ন জাভাস্ক্রিপ্টে (যা ইউনিকোড সহজাতভাবে) স্ক্রিপ্ট করার জন্য বিভিন্ন ফর্ম্যাট চেষ্টা করেছি - তবে ভাগ্য নেই। আমি কীভাবে একটি প্রোগ্রাম চালাব এবং এটি একটি ইউনিকোড কমান্ড লাইনটি পাস করব ?


1
@ জোহানেস ডেভেন্ডার - কপি-পেস্ট ভুল হয়েছে?
ভিলেক্স-

2
পাইথন 3.6: "Windows এ ডিফল্ট কনসোল যে সংস্করণের সাথে সব ইউনিকোড অক্ষর স্বীকার করি" (অবশ্য আমার জন্য এটা অধিকাংশ) কিন্তু আপনি কনসোল কনফিগার করা প্রয়োজন: cmd কমান্ড বা পাইথন অলস জানালা উপরের ডানে ক্লিক ( ), ডিফল্ট / ফন্টে "লুসিডা কনসোল" চয়ন করুন।
জিনস্নু



2
@ LưuVĩnhPhúc - না, এটি কনসোলে পাঠ্য প্রদর্শন না করে ইউনিকোড কমান্ড লাইন আর্গুমেন্টগুলি পাস করার বিষয়ে। কনসোল মোটেই জড়িত না হতে পারে।
ভিলক্স-

উত্তর:


68

আমার ব্যাকগ্রাউন্ড: আমি কয়েক বছর ধরে কনসোলে ইউনিকোড ইনপুট / আউটপুট ব্যবহার করি (এবং এটি প্রতিদিন অনেক কিছু করি do তাছাড়া, আমি ঠিক এই কাজের জন্য সমর্থন সরঞ্জাম বিকাশ করি)। এখানে খুব কম সমস্যা রয়েছে, যতক্ষণ আপনি নীচের বিষয়গুলি / সীমাবদ্ধতাগুলি বুঝতে পেরেছেন:

  • CMDএবং "কনসোল" সম্পর্কযুক্ত কারণ। CMD.exeকনসোল ("কনসোল অ্যাপ্লিকেশন") "ভিতরে কাজ" করতে প্রস্তুত এমন একটি প্রোগ্রাম of
  • আফাইক, CMDইউনিকোডের জন্য নিখুঁত সমর্থন করেছে; যখন কোনও কোডপেজ সক্রিয় থাকে আপনি সমস্ত ইউনিকোড অক্ষরে প্রবেশ / আউটপুট দিতে পারেন ।
  • উইন্ডোজের কনসোলটিতে ইউনিকোডের জন্য প্রচুর সমর্থন রয়েছে - তবে এটি নিখুঁত নয় (কেবল "যথেষ্ট ভাল"; নীচে দেখুন)।
  • chcp 65001খুব বিপজ্জনক। উইন্ডোজের এপিআই-তে ত্রুটিগুলি ঘটিয়ে কাজ করার জন্য কোনও প্রোগ্রাম বিশেষভাবে তৈরি করা না হলে (বা এই সিআরটাইম লাইব্রেরি ব্যবহার করে যা এই কাজের ক্ষেত্রগুলিতে রয়েছে), এটি নির্ভরযোগ্যভাবে কাজ করবে না। এর সাথে cp65001উইন 8 সমাধান করে problems তবে এটি এখনও উইন 10 এর জন্য প্রযোজ্য
  • আমি কাজ cp1252। আমি ইতিমধ্যে বলেছি: কনসোলে ইউনিকোড ইনপুট / আউটপুট দিতে, একটিকে কোডপেজ সেট করার প্রয়োজন হয় না

বিস্তারিত

  • কোনও কনসোলে ইউনিকোড পড়তে / লিখতে, একটি অ্যাপ্লিকেশন (বা এর সি রানটাইম লাইব্রেরি) File-I/Oএপিআই নয়, এপিআই ব্যবহারের জন্য যথেষ্ট স্মার্ট হওয়া উচিত Console-I/O। (উদাহরণস্বরূপ, পাইথন এটি কী করে তা দেখুন ))
  • একইভাবে, ইউনিকোড কমান্ড-লাইন আর্গুমেন্টগুলি পড়ার জন্য, একটি অ্যাপ্লিকেশন (বা এর সি রানটাইম লাইব্রেরি) সংশ্লিষ্ট এপিআই ব্যবহার করার জন্য যথেষ্ট স্মার্ট হওয়া উচিত।
  • কনসোল ফন্ট রেন্ডারিং বিএমপিতে কেবল ইউনিকোড অক্ষরকে সমর্থন করে (অন্য কথায়: নীচে U+10000)। কেবল সহজ পাঠ্য রেন্ডারিংই সমর্থিত (সুতরাং ইউরোপীয় - এবং কিছু পূর্ব এশিয়ান - ভাষা ভালভাবে কাজ করা উচিত - যতক্ষণ না কেউ প্রাকম্পোজিত ফর্ম ব্যবহার করে)। [ পূর্ব এশীয় এবং ইউ +0000, ইউ + 0001, ইউ + 30 এফবি অক্ষরের জন্য এখানে একটি ছোটখাট সূক্ষ্ম মুদ্রণ রয়েছে ]]

ব্যবহারিক সিদ্ধান্ত

  • অক্ষমতা উইন্ডোতে খুব সহায়ক নয়। সেরা অভিজ্ঞতার জন্য, একটির কনফিগারেশনের 3 টি অংশ তৈরি করা উচিত:

  • একটি কনসোল অ্যাপ্লিকেশন (খুব প্রযুক্তিগত) মধ্যে "পেস্টিং" দিয়ে আরও একটি গ্যাচা:

    • হেক্স ইনপুট উপর একটি অক্ষর বিতরণ KeyUpএর Alt; একটি চরিত্র সরবরাহ করার অন্যান্য সমস্ত উপায় ঘটতে পারে KeyDown; এতগুলি অ্যাপ্লিকেশন কোনও অক্ষর দেখতে প্রস্তুত নয় KeyUp। (কেবলমাত্র Console-I/Oএপিআই ব্যবহার করে অ্যাপ্লিকেশনগুলিতে প্রযোজ্য ))
    • উপসংহার: অনেক অ্যাপ্লিকেশন HX ইনপুট ইভেন্টগুলিতে প্রতিক্রিয়া জানায় না।
    • তদুপরি, একটি "আটকানো" অক্ষরটি কী ঘটে তা বর্তমান কীবোর্ড বিন্যাসের উপর নির্ভর করে: যদি উপসর্গ কীগুলি ব্যবহার না করে অক্ষরটি টাইপ করা যায় (তবে সংশোধনকারীগুলির মতো নির্বিচারে জটিল সংমিশ্রণ সহ Ctrl-Alt-AltGr-Kana-Shift-Gray*) তবে এটি একটি অনুকরণীয় কী-টিপস সরবরাহ করা হয়। কোনও অ্যাপ্লিকেশন এটিই প্রত্যাশা করে - সুতরাং কেবলমাত্র এই জাতীয় অক্ষর রয়েছে এমন কোনও কিছু আটকানো ভাল।
    • তবে, "অন্যান্য" অক্ষরগুলি এইচএক্স ইনপুট অনুকরণ করে সরবরাহ করা হয় ।

    উপসংহার : যদি না প্রিফিক্স কী ছাড়া অক্ষর অনেকটা আপনার কীবোর্ড লেআউট সমর্থন ইনপুট, কিছু বগী অ্যাপ্লিকেশন যখন আপনি অক্ষর থামিয়া পারেPasteকনসোলের UI 'তে মাধ্যমে:Alt-Space E P। ( এই কারণেই আমি আমার কীবোর্ড লেআউটগুলি ব্যবহার করার পরামর্শ দিচ্ছি!)

আপনার মনে রাখা উচিত যে উইন্ডোজের জন্য "বিকল্প, 'আরও সক্ষম' কনসোলগুলি" মোটেই কনসোল নয় । তারা Console-I/Oএপিআই সমর্থন করে না , সুতরাং যেসব প্রোগ্রামগুলি এই এপিআইগুলিতে কাজ করে তাদের কাজ করে না। (যে প্রোগ্রামগুলি কেবল "কনসোল ফাইলহান্ডলে কেবল ফাইল -1 / O APIs" ব্যবহার করে তা ঠিক কাজ করবে))

এই জাতীয় নন-কনসোলের একটি উদাহরণ মাইক্রোসফ্টের একটি অংশ Powershell। আমি এটা বেবহার করি না; পরীক্ষা করতে, টিপে এবং ছেড়ে দিতে WinKey, তারপরে টাইপ করুন powershell


(অন্যদিকে, এমন প্রোগ্রাম রয়েছে যেমন ConEmuবা ANSICONযা আরও বেশি করার চেষ্টা করে: তারা Console-I/Oসত্যিকারের কনসোল অ্যাপ্লিকেশনগুলিকেও কাজ করতে API গুলি বাধা দেওয়ার "প্রচেষ্টা" করে This এটি স্পষ্টতই খেলনা উদাহরণ প্রোগ্রামগুলির জন্য কাজ করে; বাস্তব জীবনে, এটি হতে পারে বা আপনার বিশেষ সমস্যাগুলি সমাধান নাও করতে পারে Exper পরীক্ষা।)

সারসংক্ষেপ

  • ফন্ট, কীবোর্ড লেআউট সেট করুন (এবং optionচ্ছিকভাবে, এইচএক্স ইনপুটটিকে অনুমতি দিন)।

  • কেবলমাত্র এমন অ্যাপ্লিকেশনগুলি ব্যবহার করুন যা Console-I/OAPI গুলির মধ্য দিয়ে যায় এবং ইউনিকোড কমান্ড-লাইন আর্গুমেন্ট গ্রহণ করে। উদাহরণস্বরূপ, যে কোনও cygwinসংকলিত প্রোগ্রামটি ভাল হওয়া উচিত। আমি ইতিমধ্যে বলেছি, CMDখুব ভাল।

ইউপিডি: প্রাথমিকভাবে, একটি বাগ-ইন করার জন্য cp65001, আমি কার্নেল এবং সিআরটিএল স্তরগুলি মিশ্রিত করছিলাম ( ইউপিডি: এবং উইন্ডোজ ব্যবহারকারী-মোড এপিআই!)। এছাড়াও: উইন 8 এই বাগের অর্ধেক স্থির করে; আমি "আরও ভাল কনসোল" অ্যাপ্লিকেশন সম্পর্কে বিভাগটি স্পষ্ট করে দিয়েছি এবং পাইথন কীভাবে এটি করে তার একটি উল্লেখ উল্লেখ করেছি added


ঠিক আছে, এই পুঙ্খানুপুঙ্খভাবে কিছু করার জন্য , আপনি গ্রহণযোগ্য উত্তর পাওয়ার যোগ্য! অসাধারণ!
ভিলাক্স-

5
আমি সি ++ এর নবাগত এবং সাবধানে পড়ার পরে এই উত্তরটি বুঝতে পারি না। কেউ কি আমাকে এই সম্পর্কে সহায়তা করতে বা আরও সহজ ব্যাখ্যা করতে পারে?
রিক

@ বাচ্চি বাচ্চিকে ধন্যবাদ, আমি জানতে পেরেছিলাম যে আমার কীবোর্ড লেআউটের v73 (উপরে উল্লিখিত) কিছু সমর্থন ফাইল মিস করছে। এখন ঠিক! (আমার .logফাইলগুলি বিচার করে এটি zip -ru[?!] এর মধ্যে একটি অন্তর্বর্তী বাগ আছে । কীভাবে এটি ডিবাগ করা যায় - বা ভবিষ্যতে এড়ানো যায় সে সম্পর্কে কোনও ধারণা নেই))
ইলিয়া জাখেরেভিচ

@ রিক: ঠিক! আমি পাইথনের একটি কাজের সাথে একটি লিঙ্ক যুক্ত করেছি (তবে আমি এখনই প্যাচের সরাসরি লিঙ্কটি খুঁজে পাচ্ছি না ...)।
ইলিয়া জাখেরেভিচ

ইলিয়াজখারিভিচ: ডি আপনাকে ধন্যবাদ তবে আমি কোনওভাবে উইন্ডোজে ইউনিকোড ব্যবহার ছেড়ে দিয়েছি। আমি পরে লিনাক্স ব্যবহার করতে যাচ্ছি।
রিক

387

চেষ্টা করুন:

chcp 65001

যা কোড পৃষ্ঠাটি ইউটিএফ -8 এ পরিবর্তন করবে। এছাড়াও, আপনাকে লুসিডা কনসোল ফন্টগুলি ব্যবহার করতে হবে।


18
আপনি কি জানেন যে এটির ডিফল্ট করার কোনও উপায় আছে কিনা?
আনানফায়

82
নোট করুন উইন্ডোজ এর কোড পৃষ্ঠা 65001 সমর্থনে গুরুতর বাস্তবায়ন বাগ রয়েছে যা সি স্ট্যান্ডার্ড লাইব্রেরি IO পদ্ধতিগুলির উপর নির্ভর করে এমন অনেকগুলি অ্যাপ্লিকেশন ভেঙে দেবে, সুতরাং এটি খুব ভঙ্গুর। (ব্যাচের ফাইলগুলি কেবল 65001 এ কাজ করা বন্ধ করে দেয়)) দুর্ভাগ্যক্রমে ইউটিএফ -8 উইন্ডোজের দ্বিতীয় শ্রেণির নাগরিক।
ববিনস করুন

7
@ ববিন্স আপনি উইন্ডোজ কোড পৃষ্ঠা 65001 সমর্থন একটি বাগের উদাহরণ আছে? আমি কৌতূহলী কারণ আমি কখনই এর মধ্যে পড়ি না, এবং গুগলিংও কোনও কিছুই বদলায় না। (ব্যাচের ফাইলগুলি অবশ্যই কাজ করা বন্ধ করে দেয়, তবে ইউটিএফ -8 খুব কমই দ্বিতীয় শ্রেণির নাগরিক ...)
রোমান স্টারকভ

17
@ ক্রমিনস: আমার বোধগম্যতাটি হ'ল যে কলগুলি এমন একটি সংখ্যা দেয় যা বাইট (যেমন ফ্রেড / ফাইরাইট / ইত্যাদি) আসলে একটি সংখ্যার অক্ষর দেয়। এটি অসম্পূর্ণ ইনপুট-পঠন, fflush এ হ্যাং, ভাঙা ব্যাচ ফাইল এবং এর মতো বিভিন্ন ধরণের লক্ষণগুলির কারণ ঘটায়। কিছু পটভূমি। সিজেকে "মাল্টবাইট" লোকেলের জন্য ব্যবহৃত ডিফল্ট কোড পৃষ্ঠাগুলি এগুলি ঠিক করার জন্য বিশেষ হ্যান্ডলিং অন্তর্নির্মিত রয়েছে, তবে 65001 না - এটি সমর্থিত নয়
12

7
এখানে আকর্ষণীয় প্রশ্ন যদিও - বাগটি কারণ এটির বাইটগুলি প্রতিবেদন করা উচিত এবং তার পরিবর্তে অক্ষরগুলি প্রতিবেদন করা উচিত - বা এটি ব্যবহারকারী অ্যাপ্লিকেশনগুলি বাইটস = অক্ষরগুলি ভুলভাবে ধরেছে? অন্য কথায়, এটি কোনও এপিআই ব্যর্থ হয় বা কোনও এপিআই ব্যবহার ব্যর্থ হয়?
বেসিক

36

আমারও একই সমস্যা ছিল (আমি চেক প্রজাতন্ত্রের)। আমার উইন্ডোজটির একটি ইংলিশ ইনস্টলেশন রয়েছে এবং একটি শেয়ারড ড্রাইভের ফাইলগুলি নিয়ে আমার কাজ করতে হবে। ফাইলগুলির পথে চেক-নির্দিষ্ট অক্ষর অন্তর্ভুক্ত।

যে সমাধানটি আমার পক্ষে কাজ করে তা হ'ল:

ব্যাচ ফাইলে, চরসেট পৃষ্ঠাটি পরিবর্তন করুন

আমার ব্যাচের ফাইল:

chcp 1250
copy "O:\VEŘEJNÉ\ŽŽŽŽŽŽ\Ž.xls" c:\temp

ব্যাচ ফাইলটি সিপি 1250 এ সংরক্ষণ করতে হবে।

নোট করুন যে কনসোলটি অক্ষরগুলি সঠিকভাবে প্রদর্শন করবে না, তবে এটি তাদের বুঝতে পারবে ...


1
চিয়ার্স! আমার এটির প্রয়োজন ছিল যাতে আমি আমার ব্যাচের ফাইলের মধ্যে কপিরাইটের অক্ষরটি ইনপুট করতে পারি।
লেয়া হেইস

আপনার কাছে প্রায় একইরকম পরিস্থিতিতে এটি আমার পক্ষে পুরোপুরি কাজ করেছিল worked পরিবর্তে আমার পথ অন্তর্ভুক্ত আইরিশ গেলিক অক্ষর অর্থাৎ á, é, í, ó, এবং ú
Seany84

@ ওভানা ​​যা আমার "তুর্কি চরিত্রগুলি এবং নেটওয়ার্ক সমস্যার পথে পথে" স্থানগুলি সমাধান করে। তুমি মহান.
ক্যাগলারার

এছাড়াও এই সম্পদের খুঁজে পেয়েছেন: msdn.microsoft.com/en-us/library/windows/desktop/... , ss64.com/nt/chcp.html , technet.microsoft.com/en-us/library/bb490874.aspx তুর্কি chcp 857 হয়।
ক্যাগলারার

2
অক্ষরগুলি সঠিকভাবে প্রদর্শন করতে আপনাকে সম্ভবত বিভিন্ন ফন্ট ব্যবহার করার দরকার ছিল, লুসিডা কনসোল আমার পক্ষে কাজ করেছিল।
ভ্লাস্টিমিল ওভেক

29

নন-ইউনিকোড প্রোগ্রামগুলির জন্য ভাষাটি পরীক্ষা করুন। উইন্ডোজ কনসোলে আপনার যদি রাশিয়ানদের সাথে সমস্যা হয় তবে আপনার এখানে রাশিয়ান সেট করা উচিত:

নন-ইউনিকোড প্রোগ্রামগুলির জন্য ভাষা পরিবর্তন করা


6
এটি ইউনিকোডের জন্য সমর্থন সক্ষম করে না cmd, এটি কেবলমাত্র ডিফল্ট কোডপেজটি স্যুইচ করে cp866যা এখনও 8-বিটের অক্ষর সেট। এমনকি এটির cp866পরিবর্তে এটি ব্যবহার করে cp1251যার নিজস্ব শিট লোড যুক্ত করে।
ivan_pozdeev

1
আরও নতুন উইন্ডোজ 10 সংস্করণে নতুন বিকল্পের জন্য নীচের উত্তরটি দেখুন
zvi

14

উইন্ডোজ কনসোলের ডিফল্ট কোডপেজ পরিবর্তন করা বেশ কঠিন। আপনি যখন ওয়েব অনুসন্ধান করেন আপনি বিভিন্ন প্রস্তাব পান, তবে তাদের মধ্যে কিছু আপনার উইন্ডোজ পুরোপুরি ভেঙে দিতে পারে, অর্থাত আপনার পিসি আর বুট করে না।

আপনার রেজিস্ট্রি কী এখানে যান: সবচেয়ে নিরাপদ সমাধান এই এক HKEY_CURRENT_USER\Software\Microsoft\Command Processorএবং স্ট্রিং মান যোগ Autorun= chcp 65001

অথবা আপনি খুব সাধারণ কোড পৃষ্ঠাগুলির জন্য এই ছোট ব্যাচ-স্ক্রিপ্টটি ব্যবহার করতে পারেন।

@ECHO off

SET ROOT_KEY="HKEY_CURRENT_USER"


FOR /f "skip=2 tokens=3" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /v OEMCP') do set OEMCP=%%i

ECHO System default values:

ECHO.
ECHO ...............................................
ECHO Select Codepage 
ECHO ...............................................
ECHO.
ECHO 1 - CP1252
ECHO 2 - UTF-8
ECHO 3 - CP850
ECHO 4 - ISO-8859-1
ECHO 5 - ISO-8859-15
ECHO 6 - US-ASCII
ECHO.
ECHO 9 - Reset to System Default (CP%OEMCP%)
ECHO 0 - EXIT
ECHO.


SET /P  CP="Select a Codepage: "

if %CP%==1 (
    echo Set default Codepage to CP1252
    reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 1252>nul" /f
) else if %CP%==2 (
    echo Set default Codepage to UTF-8
    reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 65001>nul" /f
) else if %CP%==3 (
    echo Set default Codepage to CP850
    reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 850>nul" /f
) else if %CP%==4 (
    echo Set default Codepage to ISO-8859-1
    add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28591>nul" /f
) else if %CP%==5 (
    echo Set default Codepage to ISO-8859-15
    add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28605>nul" /f
) else if %CP%==6 (
    echo Set default Codepage to ASCII
    add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 20127>nul" /f
) else if %CP%==9 (
    echo Reset Codepage to System Default
    reg delete "%ROOT_KEY%\Software\Microsoft\Command Processor" /v AutoRun /f
) else if %CP%==0 (
    echo Bye
) else (
    echo Invalid choice
    pause
)

ব্যবহার @chcp 65001>nulপরিবর্তে chcp 65001শুষে আউটপুট "সক্রিয় কোড পৃষ্ঠা: 65001" আপনি প্রত্যেক সময় আপনি একটি নতুন কমান্ড লাইন জানালা শুরু হবে।

কোড পৃষ্ঠা শনাক্তকারীদের থেকে পাওয়া সমস্ত উপলভ্য নম্বরের একটি সম্পূর্ণ তালিকা

দ্রষ্টব্য, সেটিংস কেবলমাত্র বর্তমান ব্যবহারকারীর জন্য প্রযোজ্য হবে। আপনি সমস্ত ব্যবহারকারীদের জন্য সেট করতে চান তাহলে, লাইন প্রতিস্থাপন SET ROOT_KEY="HKEY_CURRENT_USER"দ্বারাSET ROOT_KEY="HKEY_LOCAL_MACHINE"


সুন্দর ধারণা এবং ব্যবহারের উদাহরণও!

13

আসলে, কৌশলটি হ'ল কমান্ড প্রম্পট প্রকৃতপক্ষে এই অ-ইংরেজি অক্ষরগুলি বোঝে, কেবল সেগুলি সঠিকভাবে প্রদর্শন করতে পারে না।

আমি যখন কমান্ড প্রম্পটে কোনও পাথ প্রবেশ করি যেখানে কিছু অ-ইংরাজী চিঠি রয়েছে এটি "?? ?????? ?????" হিসাবে প্রদর্শিত হয়। যখন আপনি আপনার আদেশটি (সিডি "???????????" আমার ক্ষেত্রে) জমা দেবেন, তখন সবকিছু প্রত্যাশা অনুযায়ী কাজ করছে।


2
নামকরণের দ্বন্দ্ব পেতে পারে এটি সম্ভবত খানিকটা বিপজ্জনক। উদাহরণস্বরূপ, যদি আপনার কাছে দুটি ফাইল থাকে যা "???" হিসাবে রেন্ডার করে এবং আপনি "সিডি ???" প্রবেশ করেন এটি কোনটি ব্যবহার করবে তা জানত না (বা আরও খারাপ কোনও স্বেচ্ছাচারিতা বেছে নেবে)।
জন

26
আপনি প্রবেশ করবেন না ???, আপনি আসল নামটি প্রবেশ করান যা এটি ঠিক প্রদর্শিত হচ্ছে ??? ??? এটি একটি পাসওয়ার্ড ইনপুট বাক্স হিসাবে ভাবেন। আপনি যা কিছু প্রবেশ করেন তা *** হিসাবে প্রদর্শিত হয় তবে জমা দেওয়া হয় মূল পাঠ্য।
ব্যবহারকারী

এটি প্রকৃতপক্ষে কমান্ড প্রম্পটে সরাসরি কমান্ডগুলির জন্য কাজ করে। তবে, .cmdব্যাচ ফাইল চালানোর সাথে সাথে আমার এখনও ব্যাচ ফাইলের chcp 65001শীর্ষে রাখা দরকার ।
উইসবাকি

আপনার ক্ষেত্রে এটি হরফ সমস্যা ... বিষয়বস্তু রয়েছে, এটি প্রদর্শনের জন্য সঠিক কোনও ফন্ট নেই। তবে ওপি আলাদা।
ওয়েস্টার্নগান

11

একটি উইন্ডোজ 10 x64 মেশিনে, আমি কমান্ড প্রম্পটটি অ-ইংরাজী অক্ষরগুলি প্রদর্শন করেছিলাম:

একটি উন্নত কমান্ড প্রম্পট খুলুন (প্রশাসক হিসাবে CMD.EXE চালান)। কনসোলে উপলব্ধ ট্রু টাইপ ফন্টগুলির জন্য আপনার রেজিস্ট্রিটি জিজ্ঞাসা করুন:

    REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont"

আপনি একটি আউটপুট দেখতে পাবেন:

    0    REG_SZ    Lucida Console
    00    REG_SZ    Consolas
    936    REG_SZ    *新宋体
    932    REG_SZ    *MS ゴシック

এখন আমাদের কুরিয়ার নিউ এর মতো আপনার প্রয়োজনীয় অক্ষরগুলিকে সমর্থন করে এমন একটি ট্রু টাইপ ফন্ট যুক্ত করতে হবে। আমরা স্ট্রিং নামটিতে জিরো যুক্ত করে এটি করি, সুতরাং এক্ষেত্রে পরেরটিটি "000" হবে:

    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New"

এখন আমরা ইউটিএফ -8 সমর্থন বাস্তবায়ন করি:

    REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f

"কুরিয়ার নিউ" এ ডিফল্ট ফন্ট সেট করুন:

    REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f

ফন্টের আকার 20 এ সেট করুন:

    REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f

আপনি চাইলে দ্রুত সম্পাদনা সক্ষম করুন:

    REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f

3
সাধারণভাবে কোডেপ 65651 ব্যবহার করে উইন্ডোজ 10-এ কেবল নির্মাতারা আপডেট দিয়ে বাগ ছাড়াই কাজ করবে। উইন্ডোজ 7 এ এর ​​আউটপুট এবং ইনপুট উভয়ই থাকবে। উইন্ডোজ 8 এবং উইন্ডোজ 10 এর পুরানো সংস্করণগুলিতে এটিতে কেবল ইনপুট বাগ রয়েছে, যা ইনপুটটিকে 7-বিট ASCII এর মধ্যে সীমাবদ্ধ করে।
এরিক সান

6

পাইথন ২.7-এর কোনও পূর্ণ উত্তর আমি দেখেনি বলে আমি দুটি গুরুত্বপূর্ণ পদক্ষেপ এবং একটি কার্যকর alচ্ছিক পদক্ষেপের রূপরেখা দেব যা বেশ কার্যকর।

  1. আপনার ইউনিকোড সমর্থন সহ একটি ফন্ট দরকার। উইন্ডোজ লুসিডা কনসোল নিয়ে আসে যা কমান্ড প্রম্পটের শিরোনাম বারে ডান ক্লিক করে এবং Defaultsবিকল্পটি ক্লিক করে নির্বাচিত হতে পারে । এটি রঙগুলিতে অ্যাক্সেসও দেয়। নোট করুন যে আপনি কমান্ড উইন্ডোগুলির জন্য নির্দিষ্ট উপায়ে (উদাহরণস্বরূপ, এখানে খুলুন, ভিজ্যুয়াল স্টুডিও) পরিবর্তনের মাধ্যমে সেটিংস পরিবর্তন করতে পারেন Properties
  2. আপনাকে কোড পৃষ্ঠাটি সেট cp65001করতে হবে যা মাইক্রোসফ্টের কমান্ড প্রম্পটে ইউটিএফ -7 এবং ইউটিএফ -8 সমর্থন সরবরাহ করার প্রচেষ্টা বলে মনে হচ্ছে। chcp 65001কমান্ড প্রম্পটে চালিয়ে এটি করুন । একবার সেট হয়ে গেলে উইন্ডোটি বন্ধ না হওয়া পর্যন্ত এটি এভাবেই থেকে যায়। আপনি যখনই cmd.exe চালু করবেন তখন আপনাকে এটি আবার করতে হবে।

আরও স্থায়ী সমাধানের জন্য, সুপার ব্যবহারকারীর এই উত্তরটি দেখুন । সংক্ষেপে, REG_SZরেজিডিট এট HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processorএবং একটি নাম ব্যবহার করে একটি (স্ট্রিং) এন্ট্রি তৈরি করুন AutoRun। এর মান পরিবর্তন করুন chcp 65001। আপনি যদি কমান্ড থেকে আউটপুট বার্তাটি দেখতে না চান তবে @chcp 65001>nulপরিবর্তে ব্যবহার করুন।

কিছু প্রোগ্রামের এই এনকোডিংয়ের সাথে ইন্টারঅ্যাক্ট করতে সমস্যা হয়, মিনজিডব্লিউ একটি উল্লেখযোগ্য যা হ'ল সংবেদনহীন ত্রুটি বার্তাটি সংকলনের সময় ব্যর্থ হয়। তবুও, এটি খুব ভালভাবে কাজ করে এবং বেশিরভাগ প্রোগ্রামের সাথে বাগের কারণ হয় না।


5

আমি এই পদ্ধতিটি উইন্ডোজ 10 এর নতুন সংস্করণগুলিতে দরকারী হিসাবে পেয়েছি:

এই বৈশিষ্ট্যটি চালু করুন: "বিটা: বিশ্বব্যাপী ভাষা সহায়তার জন্য ইউনিকোড ইউটিএফ -8 ব্যবহার করুন"

নিয়ন্ত্রণ প্যানেল -> আঞ্চলিক সেটিংস -> প্রশাসনিক ট্যাব-> সিস্টেমের লোকেল পরিবর্তন করুন ...

অঞ্চল সেটিংস


পাওয়ারশেল বা সেন্টিমিডি ব্যবহার করে কীভাবে এটি অর্জন করবেন?
কোরি

আমি কনসোলে চাইনিজ অক্ষরগুলি প্রদর্শনের চেষ্টা করছি এবং এটি করা উইন্ডোজ 10 64-বিটে (তুর্কিতে ইনস্টল করা হয়েছে এবং পরে ইংরেজিতে পরিবর্তিত হয়েছে) কাজ করে নি। এর পরে, আমি চাইনিজ ভাষা ইনস্টল করার চেষ্টা করব এবং এটি কার্যকর হয় কিনা তা দেখুন।
আকিনুরি

4

একটি সত্যিই সহজ বিকল্প হ'ল উইন্ডোজ ব্যাশ শেল যেমন মিনজিডব্লিউ ইনস্টল করা এবং এটি ব্যবহার করুন:

এখানে চিত্র বিবরণ লিখুন

আপনার ইউনিক্স কমান্ড লাইন কার্যকারিতাটি ব্যবহার করার প্রয়োজন হবে বলে কিছুটা শেখার বক্ররেখা রয়েছে তবে আপনি এর শক্তিটি পছন্দ করবেন এবং আপনি কনসোল চরিত্রটিকে ইউটিএফ -8 এ সেট করতে পারবেন।

এখানে চিত্র বিবরণ লিখুন

অবশ্যই আপনি গ্রিক, ফাইন্ড, কম ইত্যাদির মতো সমস্ত সাধারণ * নিক্স গুডিজ পাবেন


এই (পুরানো) ক্ষেত্রে, বিষয়টি কনসোলের চেয়ে স্ক্রিপ্ট নিয়ে ছিল। ব্যাশ স্ক্রিপ্ট ব্যবহার করে কি এটি সমাধান হবে?
ভিলক্স-

হ্যাঁ তারা কাঠের বাশ স্ক্রিপ্টগুলিকে ইউটিএফ -8 হিসাবে পতাকাঙ্কিত করতে পারে এবং উইন্ডোজ ব্যাচের ফাইলগুলির চেয়ে অনেক বেশি শক্তি নিয়ে কাজ করতে পারে - আমি জানি যে এটি একটি পুরানো ঘটনা ছিল তবে এমএস বলে মনে হয় না যে বিকল্পটি ভবিষ্যতের রেফারেন্সের জন্য পতাকাঙ্কিত করার পক্ষে মূল্যবান ছিল thought ইউনিকোডে আরও ভাল হচ্ছে।
স্টিভ বার্নেস


আউটপুটিং ইউটিএফ -8 এনকোডযুক্ত অক্ষরগুলি ভাল। কিন্তু ইনপুটটি এখনও সিস্টেম কোডেপ দ্বারা এনকোডড।
রিক

1
উইন্ডোজ ব্যবহারকারীদের যদি ইতিমধ্যে গিট ব্যবহার করেন তবে ইতিমধ্যে একটি গিট> গিট ব্যাশ উইন্ডোটি খুলুন উইন্ডোজ ব্যবহারকারীদের কাছে ইতিমধ্যে ব্যাশ শেল থাকতে পারে add
স্কোমিসা

3

অনুরূপ সমস্যার জন্য, (আমার সমস্যাটি ছিল কমান্ড প্রম্পটে মাইএসকিউএল থেকে UTF-8 অক্ষর দেখানো),

আমি এটি এর মতো সমাধান করেছি:

  1. আমি কমান্ড প্রম্পটের ফন্টটি লুসিডা কনসোলে পরিবর্তন করেছি। (আপনার পদক্ষেপের জন্য এই পদক্ষেপটি অবশ্যই অপ্রাসঙ্গিক হতে হবে only এটি কেবলমাত্র আপনি পর্দায় যা দেখেন তা করতে হবে এবং প্রকৃত চরিত্রটি কী তা নয়)।

  2. আমি কোডপেজটি উইন্ডোজ -১৫৩ এ পরিবর্তন করেছি। আপনি "chcp 1253" দ্বারা কমান্ড প্রম্পটে এটি করুন। এটি আমার ক্ষেত্রে যেখানে আমি ইউটিএফ -8 দেখতে চেয়েছি সেখানে কাজ করে।


7
উইন্ডোজ -১৫৩ কোনও ইউনিকোড কোডপেজ নয়। এটি একটি স্ট্যান্ডার্ড 256-অক্ষরের কোডপেজ। স্পষ্টতই আপনি কেবল এমন অক্ষর ব্যবহার করেছেন যা সেই কোডডে প্রদর্শিত হতে পারে তবে এটি সর্বজনীন হবে না।
ভিলাক্স

3

এই সমস্যাটি বেশ বিরক্তিকর। আমার সাধারণত আমার ফাইলের নাম এবং ফাইলের সামগ্রীতে চাইনিজ চরিত্র থাকে। দয়া করে মনে রাখবেন যে আমি উইন্ডোজ 10 ব্যবহার করছি, এটি আমার সমাধান:

ফাইলের নাম প্রদর্শন করতে যেমন আপনি উইন্ডোজ 10 এ উবুন্টু বাশ ইনস্টল করেছেন dirবাls

  1. অ-উত-8 অক্ষরকে সমর্থন করার জন্য অঞ্চলটি সেট করুন।

  2. এর পরে, কনসোলের ফন্টটি সেই লোকেলের ফন্টে পরিবর্তিত হবে এবং এটি কনসোলের এনকোডিংকেও পরিবর্তন করবে।

আপনি পূর্ববর্তী পদক্ষেপগুলি সম্পন্ন করার পরে কমান্ড লাইন সরঞ্জামটি ব্যবহার করে কোনও ইউটিএফ -8 ফাইলের ফাইল সামগ্রী প্রদর্শন করতে পারেন

  1. পেজটি utf-8 এ পরিবর্তন করুন chcp 65001
  2. Utf-8 সমর্থনকারী ফন্টে পরিবর্তন করুন যেমন লুসিডা কনসোল
  3. typeফাইলের বিষয়বস্তুটি দেখার জন্য কমান্ডটি ব্যবহার করুন বাcat আপনি উইন্ডোজ 10 এ উবুন্টু বাশ ইনস্টল করেছেন
  4. দয়া করে নোট করুন, কনসোলটির এনকোডিংটি utf-8 এ সেট করার পরে, আমি চাইনিজ ইনপুট পদ্ধতিটি ব্যবহার করে সিএমডি তে চাইনিজ অক্ষর টাইপ করতে পারি না।

সবচেয়ে অলস সমাধান: কেবলমাত্র একটি কনসোল এমুলেটর ব্যবহার করুন যেমন http://cmder.net/


এটা আমার পক্ষে হয়নি। pointকমান্ড আউটপুটে চীনা অক্ষরগুলি এখনও সমাহারিত হয়েছে।
সুসচিং ইউ

@ সিকিং ইয়ু আমি উন্মাদ সেটিংটি ছেড়ে দিচ্ছি। কেবল blog.miniasp.com/post/2015/09/27/Useful-tool-Cmder.aspx
কোড

আমি এর আগে সিমদার ব্যবহার করেছি তবে এটি ভিজ্যুয়াল স্টুডিও দ্বারা ব্যবহৃত বিকাশকারী কনসোলটি প্রতিস্থাপন করতে পারে না।
সুসচিং ইয়ু

@ সিকিং ইয়ু আপনি কি সি # ইন্টারেক্টিভ পাওয়ারশেল বলতে চান?
কোড

ইন্টারেক্টিভ পাওয়ার শেল নয়, ভিজ্যুয়াল সি ++ দ্বারা ব্যবহৃত বিকাশকারী কনসোল। এটি Win32 কনসোল অ্যাপ্লিকেশন প্রকল্পগুলিতে ডিফল্ট ডিবাগ কনসোল।
সুসচিং ইউ

2

আমি এখানে বেশ কয়েকটি উত্তর দেখতে পাচ্ছি, তবে তারা এই প্রশ্নের সমাধান করবে বলে মনে হয় না - ব্যবহারকারী কমান্ড লাইন থেকে ইউনিকোড ইনপুট পেতে চায়।

উইন্ডোজ দুটি বাইট স্ট্রিংয়ের এনকোডিংয়ের জন্য ইউটিএফ -16 ব্যবহার করে, তাই আপনার প্রোগ্রামে ওএস থেকে এগুলি নেওয়া আপনার প্রয়োজন। এই কাজটি করার দুটি পদ্ধতি আছে -

1) মাইক্রোসফ্টের একটি এক্সটেনশান রয়েছে যা প্রধানকে একটি প্রশস্ত চরিত্রের অ্যারে নিতে দেয়: int wmain (int argc, wchar_t * argv []); https://msdn.microsoft.com/en-us/library/6wd819wh.aspx

2) উইন্ডোজে এপি কল করুন wchar_t win_argv = (wchar_t) কমান্ডলাইনটোরআরজিভিডাব্লু (গেটকম্যান্ডলাইনডাব্লু), এবং নার্গেস) এর ইউনিকোড সংস্করণ পেতে ; https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-commandlinetoargvw

এটি পড়ুন: বিস্তারিত তথ্যের জন্য http://utf8everywhere.org , বিশেষত যদি আপনি অন্যান্য অপারেটিং সিস্টেমকে সমর্থন করছেন।


আহ, না, আমি দুঃখিত, কিন্তু আপনি প্রশ্নটি মিস করেছেন। এটি যখন আমি এমন একটি প্রোগ্রাম লিখছি যেটি ইউনিকোড চরিত্রগুলি গ্রহণ করবে for আমার প্রশ্নটি ছিল ইউনিকোডের অক্ষরগুলি অন্য প্রোগ্রামে প্রেরণ করা (যা আশা করা যায় যে সেগুলি গ্রহণে সমর্থন করে তবে আমার কাছে বাস্তুচ্যুত হওয়া ছাড়া আমার জানার কোনও উপায় নেই)।
ভিলাক্স-

2

উইন্ডোজ 10 দিয়ে জুন 2019 শুরু করে, আপনাকে কোডপেজ পরিবর্তন করতে হবে না।

" উইন্ডোজ টার্মিনাল উপস্থাপনা " ( কায়লা দারুচিনি থেকে ) এবং মাইক্রোসফ্ট / টার্মিনাল দেখুন
কনসোলস হরফ ব্যবহারের মাধ্যমে আংশিক ইউনিকোড সমর্থন সরবরাহ করা হবে।

Microsoft/Terminal387 ইস্যুতে দলিল হিসাবে :

ইউনিকোডে বর্তমানে 87,887 টি আইডোগ্রাফ রয়েছে। তোমারও সব দরকার?
আমাদের একটি সীমানা প্রয়োজন এবং সেই সীমানা ছাড়িয়ে অক্ষরগুলি হরফ হ'ল ফন্টব্যাক / ফন্ট লিঙ্কিং / যা কিছু দ্বারা পরিচালনা করা উচিত।

কনসোলাসের কী আবরণ করা উচিত:

  • CLI- র আধুনিক ওএসএস প্রোগ্রামগুলির দ্বারা প্রতীক হিসাবে ব্যবহৃত অক্ষর।
  • এই অক্ষরগুলি কনসোলসের নকশা এবং মেট্রিকগুলি অনুসরণ করা উচিত এবং বিদ্যমান কনসোলস অক্ষরগুলির সাথে সঠিকভাবে সাজানো উচিত।

কনসোলাসগুলি কী আবরণ করা উচিত নয়:

  • অক্ষর এবং স্ক্রিপ্টগুলির বিরামচিহ্ন যা লাতিন, গ্রীক এবং সিরিলিক ছাড়িয়ে বিশেষত অক্ষরগুলিকে জটিল আকার দেওয়ার দরকার হয় (আরবীর মতো)।
  • এই অক্ষরগুলি হরফ হ'ল ফন্টব্যাক সহ পরিচালনা করা উচিত।

1

ডস উইন্ডোতে টাইপ করার সময় আপনি কম্পিউটার যদি আপনার পাথ / ফাইলের নামটি সঠিকভাবে প্রদর্শন করেন তবে .bat ফাইলগুলির জন্য একটি দ্রুত সিদ্ধান্ত:

  1. অনুলিপি করুন টান। টেক্সট [এন্টার টিপুন]
  2. পাথ / ফাইলের নাম টাইপ করুন [এন্টার টিপুন]
  3. প্রেস Ctrl + জেড [Enter টিপুন]

এইভাবে আপনি একটি টেক্সট ফাইল তৈরি করুন - temp.txt। এটিকে নোটপ্যাডে খুলুন, পাঠ্যটি অনুলিপি করুন (এটি পড়ার অযোগ্য মনে করবেন না) এবং এটি আপনার .bat ফাইলে পেস্ট করুন। ডটস-উইন্ডোতে .bat তৈরি করা এইভাবে কার্যকর করা mе (সিরিলিক, বুলগেরিয়ান) এর জন্য কাজ করে।


1

আরও ভাল ক্লিনার করার জন্য: কেবল উপলভ্য, বিনামূল্যে, মাইক্রোসফ্ট জাপানি ভাষার প্যাকটি ইনস্টল করুন। (অন্যান্য প্রাচ্য ভাষার প্যাকগুলিও কাজ করবে তবে আমি জাপানিদের পরীক্ষা করেছি))

এটি আপনাকে গ্লিফের বৃহত্তর সেট সহ ফন্টগুলি দেয়, তাদের ডিফল্ট আচরণ করে তোলে, বিভিন্ন উইন্ডোজ সরঞ্জাম যেমন সিএমডি, ওয়ার্ডপ্যাড ইত্যাদি পরিবর্তন করে


1

কোড পৃষ্ঠা 1252 এ পরিবর্তন করা আমার পক্ষে কাজ করছে। আমার জন্য সমস্যাটি হ'ল প্রতীক ডাবল ডলার Windows উইন্ডোজ সার্ভার ২০০৮-এ ডস দ্বারা অন্য প্রতীককে রূপান্তরিত করছে।

আমি আমার বিসিপি বিবৃতিতে CH before এর আগে সিএইচসিপি 1252 এবং একটি ক্যাপ ব্যবহার করেছি §


ধন্যবাদ এটি কাজ করে! আমি জানি না কেন লোকেরা এটিকে ভোট দিয়েছিল, এটি কিছু লোকের জন্য একটি বৈধ বিকল্প .. এই কোডপেজ 1252 উইন্ডোজ সার্ভার 2012-এও সমস্যার সমাধান করে, যেখানে সিপি 65001 সহ একই কোডটি আমার পক্ষে কাজ করে নি। আমি মনে করি এটি ব্যাচের স্ক্রিপ্টটি কী কোডপেজের সাথে সম্পাদনা করেছে বা ওএস ডিফল্টের উপর নির্ভর করে। এক্ষেত্রে এটি এন-মার্কিন বেস ওএস সহ একটি জার্মান এমইউআই মেশিনে নোটপ্যাড দিয়ে তৈরি করা হয়েছিল
টনি ওয়াল

0

আমি ইউনিকোড-নামক ফাইলগুলি তাদের ব্যাচের ফাইলে তাদের সংক্ষিপ্ত (8 ডট 3) নাম উল্লেখ করে মুছে ফেলার অনুরূপ একটি সমস্যা পেয়েছিলাম around

সংক্ষিপ্ত নামগুলি করে দেখা যাবে dir /x। স্পষ্টতই, এটি কেবল ইউনিকোড ফাইল নামের সাথে কাজ করে যা ইতিমধ্যে পরিচিত known

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.