मैं वर्तमान ओएस के कोडपेज और लोकेल को मैन्युअल रूप से कैसे निर्धारित कर सकता हूं


13

क्या कोई ऐसा तरीका है जिससे मैं मैन्युअल रूप से एक उपयोगकर्ता को अपने विंडोज़ ओएस के वर्तमान कोडपेज और लोकेल को देख सकता हूं? क्या कोई रजिस्ट्री सेटिंग है जो उस जानकारी को स्टोर करती है?

यह भी उपयोगी होगा यदि तकनीक ने सभी तरह से विंडोज 2000 पर वापस काम किया।

जवाबों:


16

chcp आपको सक्रिय कोड पेज मिलेगा।

systeminfo अन्य चीजों के साथ सिस्टम लोकेल और इनपुट लोकेल प्रदर्शित करेगा।

" नोट : यह कमांड (सिस्टमइंफो) विंडोज 2000 में उपलब्ध नहीं है, लेकिन आप अभी भी विंडोज 2000 को कंप्यूटर पर इस कमांड को विंडोज एक्सपी या विंडोज 2003 कंप्यूटर पर चलाकर विंडोज 2000 कंप्यूटर पर रिमोट कंप्यूटर सेट कर सकते हैं। यदि वर्तमान उपयोगकर्ता लॉगऑन निष्पादित करता है। कमांड में पहले से ही रिमोट मशीन (उदाहरण के लिए, डोमेन एडमिनिस्ट्रेटर) पर विशेषाधिकार है, आपको / u और / p का उपयोग करने की आवश्यकता नहीं है। "
से यहाँ


1
ध्यान रखें कि chcpआपको सक्रिय OEM कोड पृष्ठ मिलेगा । जैसा कि mklement बताता है कि विंडोज में ANSI कोड पेज, हमेशा एक और सक्रिय कोड पेज होता है। अधिक जानकारी के लिए mklement का उत्तर देखें ।
kangalioo

6

ध्यान दें कि किसी दिए गए सिस्टम में ब्याज के दो सक्रिय पृष्ठ हैं , जैसा कि गैर-यूनिकोड कार्यक्रमों के लिए भाषा नामित विरासत द्वारा निर्धारित किया गया है , जिसे पहले सिस्टम लोकेल के रूप में जाना जाता है (पृष्ठभूमि जानकारी के लिए नीचे अनुभाग देखें):

  • OEM विरासत द्वारा उपयोग के लिए कोड पेज सांत्वना अनुप्रयोगों,
  • एएनएसआई विरासत द्वारा उपयोग के लिए कोड पेज जीयूआई अनुप्रयोगों।

नोट: दो और कोड पृष्ठ हैं, लेकिन वे अब शायद ही कभी उपयोग किए जाते हैं, और इसलिए यहां चर्चा नहीं की गई है: EBCDIC कोड और (प्री-ओएस एक्स) मैक कोड पेज - WinAPI डॉक्स देखें

सक्रिय OEM कोड पेज सबसे आसानी से के माध्यम से प्राप्त किया जाता है chcp, के रूप में में दिखाया भूल अर्द्धविराम के मददगार जवाब - यह सोचते हैं यह स्पष्ट रूप से सत्र में नहीं बदला गया था chcp <codePageNum>

सक्रिय ANSI कोड पृष्ठ का निर्धारण करना उतना आसान नहीं है, लेकिन PowerShell सिस्टम लोकेल के नाम और भाषा का निर्धारण करने में भी मदद कर सकता है :

में विंडोज 8 / Windows Server 2012+ उपयोग: Get-WinSystemLocalecmdlet:

Get-WinSystemLocale | Select-Object Name, DisplayName, 
                        @{ n='OEMCP'; e={ $_.TextInfo.OemCodePage } }, 
                        @{ n='ACP';   e={ $_.TextInfo.AnsiCodePage } }

नोट: यह [cultureinfo]::CurrentCulture.TextInfo.ANSICodePageउदाहरण के लिए उपयोग करने के लिए आकर्षक हो सकता है , लेकिन यह जरूरी नहीं कि सिस्टम-वाइड सक्रिय ANSI कोड पृष्ठ को प्रतिबिंबित करे ; इसके बजाय, यह वर्तमान उपयोगकर्ता के लोकेल (संस्कृति) से जुड़ा एएनएसआई कोड पेज है , जो अलग हो सकता है।

यूएस-इंग्लिश सिस्टम पर, उपरोक्त पैदावार:

Name  DisplayName             OEMCP  ACP
----  -----------             -----  ---
en-US English (United States)   437 1252

OEMCPOEM कोड पृष्ठ, ACPANSI कोड पृष्ठ है।

एक रजिस्ट्री आधारित पद्धति वह भी पुराने सिस्टम पर काम करता है Windows XP के लिए नीचे :

# Get the code pages:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage | 
     Select-Object OEMCP, ACP

यूएस-इंग्लिश सिस्टम पर, उपरोक्त पैदावार:

OEMCP ACP 
----- --- 
437   1252

यदि आप भी सिस्टम लोकेल के [अनुकूल] नाम और LCID प्राप्त करना चाहते हैं (हालांकि ध्यान दें कि LCID को हटा दिया गया है):

[Globalization.CultureInfo]::GetCultureInfo([int] ('0x' + (
        Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Language' Default
      ).Default)
)

यूएस-इंग्लिश सिस्टम पर, उपरोक्त पैदावार:

LCID             Name             DisplayName                                                                                                                                      
----             ----             -----------                                                                                                                                      
1033             en-US            English (United States)                                                                                                                          

पृष्ठभूमि की जानकारी :

सिस्टम स्थान है विरासत नाम क्या अब और अधिक वर्णनात्मक ढंग से कहा जाता है के लिए ग़ैर-यूनिकोड प्रोग्राम के लिए भाषा का (देखें NLS शब्दावली ), और, के रूप में नामों का सुझाव:

  • सेटिंग केवल पर लागू होता है लीगेसी प्रोग्राम (प्रोग्राम हैं जो यूनिकोड का समर्थन नहीं करते)।

  • यह किसी भी उपयोगकर्ता की स्थानीय सेटिंग्स के बावजूद सिस्टम-वाइड , लागू होता है और इसे बदलने के लिए प्रशासनिक विशेषाधिकारों की आवश्यकता होती है।

यह नोट करना महत्वपूर्ण है कि यह एक विरासत सेटिंग है , क्योंकि कोड पृष्ठ अब उन कार्यक्रमों पर लागू नहीं होते हैं जो यूनिकोड का आंतरिक रूप से उपयोग करते हैं और विंडोज एपीआई के यूनिकोड संस्करणों को कॉल करते हैं।

विशेष रूप से, यह सक्रिय कोड पृष्ठों को निर्धारित करता है , अर्थात, डिफ़ॉल्ट रूप से उपयोग किए जाने वाले वर्ण एन्कोडिंग :

  • जब गैर-यूनिकोड प्रोग्राम विंडोज एपीआई के गैर-यूनिकोड (एएनएसआई) संस्करणों को कॉल करने के लिए उपयोग करने के लिए एएनएसआई कोड पेज , विशेष रूप TextOutसे यूनिकोड से स्ट्रिंग का अनुवाद करने के लिए फ़ंक्शन का एएनएसआई संस्करण , जो उल्लेखनीय रूप से निर्धारित करता है कि प्रोग्राम के तार कैसे प्रस्तुत करते हैं। जीयूआई

  • OEM कोड पेज डिफ़ॉल्ट रूप से सक्रिय बनाने के लिए में सांत्वना खिड़कियों के रूप में से परिलक्षित, chcp

    • कंसोल विंडो का सक्रिय कोड पृष्ठ निर्धारित करता है कि कंसोल एप्लिकेशन से कीबोर्ड इनपुट और आउटपुट की व्याख्या और प्रदर्शित कैसे की जाती है
      • ध्यान दें कि इसका मतलब यह है कि यूनिकोड कंसोल अनुप्रयोगों से भी आउटपुट सक्रिय कोड पृष्ठ पर अनुवादित किया जाता है, जिसके परिणामस्वरूप जानकारी का नुकसान हो सकता है; छद्म कोड पृष्ठ का उपयोग 65001, जो यूनिकोड के यूटीएफ -8 एन्कोडिंग का प्रतिनिधित्व करता है, एक समाधान है, लेकिन इससे डेटा को गलत तरीके से समझने और यहां तक ​​कि असफल होने के लिए विरासत कमांड-लाइन प्रोग्राम हो सकते हैं - विवरण के लिए इस स्टैकऑवरफ़्लो उत्तर को देखें।
    • ANSI कोड पृष्ठ के विपरीत, आप किसी दिए गए कंसोल विंडो की मांग पर सक्रिय [OEM] कोड पृष्ठ को बदल सकते हैं ; जैसे, OEM कोड पृष्ठ पर स्विच करने के लिए 850, चलाने chcp 850में cmd.exe, और $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [text.encoding]::GetEncoding(850)PowerShell में।
  • इसके अतिरिक्त, शायद ही कभी EBCDIC और मैक कोड पृष्ठों का उपयोग किया जाता है ।

शब्द के बावजूद वातावरण विरासत अवधि और शब्द में इस्तेमाल भाषा वर्तमान समय में:

  • केवल सेटिंग इसके द्वारा नियंत्रित पहलू हैं सक्रिय कोड पृष्ठों के सेट और डिफ़ॉल्ट बिटमैप फोंट , यह भी नहीं के लिए कोई स्थान के अन्य तत्वों (जो उपयोगकर्ता के स्तर लोकेल सेटिंग इसके द्वारा नियंत्रित कर रहे हैं)।

  • एक दिया गया कोड पृष्ठ आमतौर पर कई स्थानों द्वारा साझा किया जाता है और कई भाषाओं को कवर करता है; उदाहरण के लिए, व्यापक रूप से उपयोग किए जाने वाले 1252कोड पृष्ठ का उपयोग अंग्रेजी सहित कई पश्चिमी यूरोपीय भाषाओं द्वारा किया जाता है।

हालांकि, जब आप नियंत्रण कक्ष के माध्यम सेटिंग को परिवर्तित करते हैं, आप सेटिंग चुनते हैं के माध्यम से एक विशिष्ट स्थान।

सभी विंडोज कोड पृष्ठों की सूची के लिए, https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifiers देखें


GetACP()फ़ंक्शन - technet.microsoft.com/en-us/dd318070 - यह दिलचस्प लिंक है, टिप्पणी अनुभाग एकमुश्त बताता है कि यह फ़ंक्शन रिटर्न वैल्यू उपयोगकर्ता की चयनित डिफ़ॉल्ट इनपुट भाषा और GUI भाषा का प्रतिनिधित्व नहीं करता है, लेकिन कुछ पूरी तरह से अलग ...
एरिच 'द

दरअसल, @ Arioch'The - कि मैंने पृष्ठभूमि-सूचना अनुभाग में स्पष्ट करने की कोशिश की है: सिस्टम लोकेल (ए) कोड पृष्ठों (लेकिन कोई अन्य स्थानीय सेटिंग्स) सिस्टम-वाइड , (बी) किसी उपयोगकर्ता की परवाह किए बिना निर्धारित करता है लोकेल। ध्यान दें कि लिंक किए गए पृष्ठ कैसे कहते हैं (जोर दिया गया है): " ऑपरेटिंग सिस्टम के लिए वर्तमान विंडोज एएनएसआई कोड पेज (एसीपी) पहचानकर्ता को लौटाता है "। संभावित AppLocale तृतीय-पक्ष प्रतिस्थापन के लिए: मैंने उत्तर के लिए एक लिंक जोड़ा है।
mclement

1
यह GetACP टिप्पणी / लिंक मुझे लगता है कि "भगवान का एक शब्द" पुष्टि के रूप में महत्वपूर्ण है कि MBCS-to-Unicode डिफ़ॉल्ट रूपांतरण का उद्देश्य उपयोगकर्ता-स्वतंत्र और OS- वैश्विक है, न कि केवल कुछ Windows संस्करणों में कार्यान्वयन विवरण।
एरियल 'द

1
शायद आज दोनों प्री-यूनिक्स मैक और ईबीसीडीआईसी समान रूप से "केवल कुछ ऐतिहासिक महत्व के" आला के हैं। हालांकि, मैं उस मैक सीपी से कुछ हद तक जुड़ा हुआ हूं, क्योंकि वे सादे पाठ फ़ाइलों में नई लाइनों को चिह्नित करने का एक और संस्करण बनाने में कामयाब रहे, दोनों UNIX और DOS-Win-OS / 2 पेड़ों से अलग। यह विदेशी कोने का मामला था जिसे मैंने याद किया था।
अरिच 'द

1
धन्यवाद। अधिक सामयिक लिंक - docs.microsoft.com/en-us/windows/desktop/Intl/... - और EBCDIC "Windows 2000" चिह्नित है - तो इससे पहले कि W2k यह शायद अस्तित्व में नहीं था, और सभी वर्षों के लिए के बाद से तो कोई भी परेशान हेडर रूपांतरण स्रोतों को अद्यतन करने के लिए जो मैंने उपयोग किया :-D
एरोच '

1

Msinfo32 में लोकेल को भी देखा जा सकता है।


0

सक्रिय कोड पृष्ठ पर वापस जाने वाला Windows API GetConsoleOutputCP () है


सक्रिय OEM कोडपेज (नहीं एएनएसआई कोड पृष्ठ पर) और केवल अगर यह प्रयोग (कंसोल द्वारा ओवरराइड किया गया था chcpआदेश)
अर्योक '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.