Windows कंसोल के डिफ़ॉल्ट कोड पृष्ठ को UTF-8 में बदलें


123

वर्तमान में मैं विंडोज 7 x64 चला रहा हूं और आमतौर पर मैं चाहता हूं कि सभी कंसोल टूल यूटीएफ -8 के साथ डिफ़ॉल्ट कोड पेज 850 के बजाय काम करें।

chcp 65001किसी भी उपकरण के उपयोग से पहले कमांड प्रॉम्प्ट में चलने से मदद मिलती है लेकिन क्या कोई तरीका निर्धारित किया गया है जो डिफ़ॉल्ट कोड पेज है?

अपडेट करें:

मेरे मामले में बूट करने में सिस्टम को असमर्थ बनाने के लिए HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCPमूल्य में परिवर्तन 65001दिखाई देता है।

मेरे उद्देश्य के लिए अच्छी तरह HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorunसे @chcp 65001>nulसेवा करने के लिए प्रस्तावित परिवर्तन । ( Ole_Brun का धन्यवाद )


नोट किया गया शुद्ध समाधान विंडोज के फाइंड.नेट को तोड़ सकता है (जो एंड्रॉइड एसडीके बिल्ड के साथ समस्याएं पैदा करेगा): superuser.com/questions/176737/…
J राव

हम्म, जब मैं chirp 65001 मेरे कंसोल विंडो क्रैश का उपयोग करता हूं, जब मैं dir करता हूं, लेकिन यह केवल cmd.exe को / u फ्लैग के साथ शुरू करने में मदद करता है (nb: यह यूनिकोड का उपयोग करता है इसके द्वारा chcp.com आउटपुट परिलक्षित नहीं होता है
eckes

10
65001 जैसे असमर्थित मल्टी-बाइट कोड पृष्ठ पर एन्कोडिंग पर सेट होने पर विंडोज कंसोल बग से घिर जाता है। Win32 WriteFile / ReadFile API के आउटपुट काउंट्स का उपयोग करने वाले किसी भी सॉफ़्टवेयर को गलत परिणाम मिलेंगे और परिणामस्वरूप MSVCRT की तरह सामान का निर्माण होगा। स्टैडलिब के क्रियान्वयन से गैर-एएससीआईआई के साथ सामना होने पर मैंगल्ड / दोहराया आउटपुट का उत्पादन होगा और इनपुट पर लटका रहेगा। जब तक एमएस इसे ठीक करने के लिए चारों ओर हो जाता है - और यह दशकों से हो रहा है कि कोई संकेत नहीं है - विश्व स्तर पर बदलते कंसोल कोड पृष्ठ से 65001 तक एक असाधारण रूप से बुरा विचार है
बोबोंस

2
Aविंडोज फ़ंक्शन के संस्करणों का कोई भी उपयोग टूट गया है। Wसंस्करणों का उपयोग करने के लिए सभी कोड को पोर्ट करना होगा ।
डेमी

1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCPगैर-यूनिकोड (गैर-यूटीएफ) वातावरण के लिए फॉलबैक के रूप में उपयोग किया जाता है, जाहिर है कि आप इसे 'यूनिकोड' के लिए मजबूर करने की कोशिश करते हैं, जैसा कि आप देखते हैं कि यह परिभाषा से विवादास्पद है। विंडोज शायद लटका हुआ है क्योंकि बूट पर कुछ सिस्टम सामान काम करने के लिए गैर-यूनिकोड चारसेट पर निर्भर करता है।
वेनिमस

जवाबों:


99

केवल कंसोल के लिए कोडपेज बदलने के लिए, निम्नलिखित करें:

  1. शुरू -> भागो -> regedit
  2. के लिए जाओ [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. करने के लिए मान बदलें chcp 65001

1
@ रीजेंट प्रश्न में, आपके द्वारा काम किया गया रजिस्ट्री मान है @chcp 65001>nul, जबकि इस स्वीकृत उत्तर में, यह है chcp 65001। दोनों में क्या मतभेद हैं?
गांगेयनिंजा

7
@galacticninja बस डालने chcp 65001से हर खुले कमांड प्रॉम्प्ट में 'एक्टिव कोड पेज: 65001' प्रिंट @chcp 65001>nulहोगा, जबकि किसी भी आउटपुट को रोका जा सकेगा।
रीजेंट

7
Autorunविंडोज 8.1 के तहत मेरे लिए मौजूद नहीं है।
क्लेनफ्रेन्ड

2
@kleinfreund @Luke: यदि Autorunमौजूद नहीं है, तो आप एक नई स्ट्रिंग वैल्यू को इसमें जोड़ सकते हैं@chcp 65001>nul
Dacto

1
@ डॉ.जैकी को यकीन नहीं है कि खतरनाक के साथ उनका क्या मतलब है। मैंने सिर्फ ओपी के सवाल का जवाब दिया है। आपको यह करना चाहिए या नहीं यह एक अलग सवाल है। मेरा मानना ​​है कि पायथन के साथ कुछ समस्याएं हो सकती हैं, इसलिए आप कम से कम 65001 को कोडपेज सेट करने से पहले यह देखना चाहते हैं।
निल्स मैगन लुंडे

38

व्यक्तिगत रूप से, मुझे रजिस्ट्री को बदलना पसंद नहीं है। इससे बहुत सारी समस्याएं हो सकती हैं। मैंने एक बैच फ़ाइल बनाई:

@ECHO OFF
REM change CHCP to UTF-8
CHCP 65001
CLS

मैंने C:\Windows\System32switch.bat के रूप में सहेजा है।

मैंने डेस्कटॉप पर cmd.exe के लिए एक लिंक बनाया।

Cmd शॉर्टकट के गुणों में, गंतव्य को निम्न में बदल दिया: C:\Windows\System32\cmd.exe /k switch

Voilá, जब मुझे UTF-8 में टाइप करने की आवश्यकता होती है, तो मैं इस लिंक का उपयोग करता हूं।


7
ध्यान दें कि यह प्रिंटआउट के Active code page: 65001लिए प्रिंट होगा । तो अगर आप कुछ ऐसा कर रहे हैं CHCP 65001 && mycommand.exeतो आपको शुरू में प्रिंट आउट का कोडपेज मिलेगा। आपको जरूरत हैCHCP 65001 >nul && mycommand.exe
फ्रैंबर्ट रॉबर्ट

32

Reg फ़ाइल:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:fde9
  1. मान हेक्स में होना चाहिए
  2. शीर्ष पंक्ति को ठीक उसी तरह शामिल किया जाना चाहिए जैसा कि है
  3. HKEY_CURRENT_USER संक्षिप्त नहीं किया जा सकता है
  4. डॉर्ड को छोड़ा नहीं जा सकता

सही कमाण्ड:

REG ADD HKCU\Console\%SystemRoot^%_system32_cmd.exe /v CodePage /t REG_DWORD /d 65001
  1. मूल्य डेक्स या हेक्स में हो सकता है
  2. % SystemRoot% बच जाना चाहिए
  3. REG_DWORD को छोड़ा नहीं जा सकता है

शक्ति कोशिका:

New-Item -ErrorAction Ignore HKCU:\Console\%SystemRoot%_system32_cmd.exe
Set-ItemProperty HKCU:\Console\%SystemRoot%_system32_cmd.exe CodePage 65001
  1. मूल्य डेक्स या हेक्स में हो सकता है
  2. -Type DWord PowerShell 3+ के साथ ग्रहण किया गया है
  3. उपयोग कर सकते हैं ni -> New-Item
  4. उपयोग कर सकते हैं sp -> Set-ItemProperty
  5. उपयोग कर सकते हैं -ea 0 -> -ErrorAction Ignore

Cygwin:

regtool add '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe'
regtool set '\HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage' 65001
  1. मूल्य डेक्स या हेक्स में हो सकता है
  2. उपयोग कर सकते हैं / -> \
  3. उपयोग कर सकते हैं HKCU -> HKEY_CURRENT_USER
  4. उपयोग कर सकते हैं user -> HKEY_CURRENT_USER

विंडोज 10 में काम नहीं किया। क्या काम करता है एक ऑटोरन बनाना है जो कोड कमांड को chcp कमांड के माध्यम से सेट करता है। जैसे,
जॉर्ज

मेरे कहने का मतलब यह था कि पहले से तय समय सीमा को संपादित करें, chcp 65001एक ऑटोरन कमांड फाइल में मुद्दा था । Stackoverflow.com/a/17405182/315083
जॉर्ज

बात यह है कि यह केवल सीएमडी के लिए काम करता है, लेकिन कंसोल द्वारा स्वयं के लिए नहीं।
अरादमन

5

कोडपेज बदलने की कमांड है chcp <codepage>। उदाहरण: chcp 1252। आपको इसे पॉवरशेल विंडो में टाइप करना चाहिए। इसे हर बार टाइप करने की परेशानी से बचने के लिए (यदि आपको हमेशा कोडपेज बदलना पड़ता है), तो आप इसे प्रोग्राम की कमांड लाइन में जोड़ सकते हैं। ऐसा करने के लिए, इन चरणों का पालन करें:

  1. प्रारंभ मेनू पर Powershell आइकन पर राइट-क्लिक करें और "अधिक"> "फ़ाइल स्थान खोलें" चुनें।
  2. Powershell शॉर्टकट को राइट-क्लिक करें और "गुण" चुनें।
  3. "लक्ष्य" कमांड लाइन के अंत में निम्नलिखित जोड़ें: -NoExit -Command "chcp 1252"

खुश रहो। जब तक आपके पास कोई दूसरा विकल्प न हो, विंडोज रजिस्ट्री से उपद्रव न करें।


इसने मेरे लिए पूरी तरह से काम किया। -NoExit -Command "chcp 1252 > null"शुरुआत में चयनित कोड पृष्ठ के बारे में भी संदेश छोड़ देता है।
कोडमोंकी

5

यह एक PowerShell प्रोफ़ाइल बनाकर और इसमें "chcp 65001> $ null" कमांड जोड़कर किया जा सकता है:

PS> Set-ExecutionPolicy RemoteSigned
PS> New-Item -Path $Profile -ItemType file -Force
PS> notepad $Profile

इसके लिए रजिस्ट्री को संपादित करने की आवश्यकता नहीं है और, शॉर्टकट संपादित करने के विपरीत, यदि Windows Explorer संदर्भ मेनू का उपयोग करके किसी विशिष्ट फ़ोल्डर में PowerShell प्रारंभ किया जाता है, तो यह काम करेगा।


1
@PimpJuiceIT, नहीं .. इस उत्तर की पहली पंक्ति देखें।
डेक्टो

4

विंडोज 10 के 1809 बिल्ड में मैंने सिस्टम को स्थायी रूप से हल Language settingsकरने Administrative language settings, बॉक्स का चयन करने , क्लिक करने Change system locale...और जांचने Beta: Use Unicode UTF-8 for worldwide language supportऔर फिर अपने पीसी को रीस्टार्ट करके इसे हल करने में कामयाबी हासिल की है ।

इस तरह यह सभी अनुप्रयोगों पर लागू होता है, यहां तक ​​कि उन लोगों पर भी जो मैं कमांड प्रॉम्प्ट से शुरू नहीं करता हूं!
(जो मेरे लिए अजीब था, क्योंकि मैं एटम से एजडा कोड को संपादित करने की कोशिश कर रहा था।)

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