Geçerli işletim sisteminin CodePage ve Yerel Ayarını el ile nasıl belirleyebilirim


13

El ile bir kullanıcı geçerli kod sayfası ve Windows işletim sistemi yerel arama bakmak bir yolu var mı? Bu bilgileri depolayan bir kayıt defteri ayarı var mı?

Tekniğin Windows 2000'e kadar devam etmesi de yararlı olacaktır.

Yanıtlar:


16

chcp size etkin kod sayfasını getirir.

systeminfo , diğerlerinin yanı sıra sistem yerel ayarını ve giriş yerel ayarını görüntüler.

" Not : Bu komut (systeminfo) Windows 2000'de kullanılamaz, ancak Windows XP veya Windows 2003 bilgisayarında bu komutu çalıştırarak Windows 2000 bilgisayarını sorgulayabilir ve uzak bilgisayarı Windows 2000 bilgisayarına ayarlayabilirsiniz. komutunun uzak makinede zaten ayrıcalık var (örneğin, Etki Alanı Yöneticileri), / u ve / p kullanmak zorunda değilsiniz. "
Gönderen burada .


1
Unutmayın chcpsize aktif alacak OEM kod sayfası. Mklement yanıtında belirtildiği gibi, Windows tarafından kullanılan ANSI kod sayfası her zaman başka bir etkin kod sayfası vardır. Daha fazla bilgi için mklement'in cevabına bakınız .
kangalioo

6

O Not verilen bir sistem vardır iki ilgi aktif kod sayfalarını eski ayar adlı belirlediği şekilde, Unicode olmayan programlar için dilin eskiden olarak bilinen sistem yerel (arka plan bilgisi için alt bölümüne bakınız):

  • OEM mirası tarafından kullanılmak üzere kod sayfası konsol uygulamaları,
  • eski GUI uygulamaları tarafından kullanılmak üzere ANSI kod sayfası .

Not: İki kod sayfası daha vardır , ancak bunlar artık nadiren kullanılmaktadır ve bu nedenle burada tartışılmamaktadır: EBCDIC kodu ve (OS X öncesi) Mac kodu sayfası - WinAPI belgelerine bakın .

Etkin OEM kod sayfası en kolay yolu ile elde edilir chcpgösterildiği gibi, Unutulan noktalı virgül en yararlı cevap açıkça birlikte oturumda değiştirilmedi varsayarak - chcp <codePageNum>.

Etkin ANSI kod sayfasını belirlemek o kadar basit değildir, ancak PowerShell de sistem yerel ayarının adını ve dilini belirlemede yardımcı olabilir :

In Windows'un 8+ / Windows Server 2012+ Kullanım: Get-WinSystemLocalecmdlet:

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

Not: kullanımına cazip olabilir [cultureinfo]::CurrentCulture.TextInfo.ANSICodePage, örneğin, ama bu yok değil mutlaka yansıtmak sistem genelinde aktif ANSI kod sayfası; bunun yerine, mevcut kullanıcının yerel ayarıyla (kültürü) ilişkili, farklı olabilecek ANSI kod sayfasıdır .

ABD-İngiliz sisteminde yukarıda belirtilenler:

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

OEMCPOEM kod sayfası, ACPANSI kod sayfasıdır.

Bir kayıt tabanlı yöntem ayrıca eski sistemler üzerinde çalışır Windows XP için aşağı :

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

ABD-İngiliz sisteminde yukarıda belirtilenler:

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

Ayrıca sistem yerel ayarının [kolay] adını ve LCID'sini almak istiyorsanız (LCID'lerin kullanımdan kaldırıldığını unutmayın):

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

ABD-İngiliz sisteminde yukarıda belirtilenler:

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

Arka plan bilgileri :

Sistem yerel ayarı , Unicode olmayan programlar için artık daha açıklayıcı olarak adlandırılan dilin (bkz. NLS terminolojisine ) eski addır ve adların önerdiği gibi:

  • Bu ayar yalnızca eski programlar (Unicode'u desteklemeyen programlar) için geçerlidir.

  • Bu uygular sistem genelinde bakılmaksızın belirli bir bölgesinin, kullanıcının yerel ayarlarına ve idari ayrıcalıkları değiştirmek için gereklidir.

Öyle ise nota için önemlidir bir miras ayarı , çünkü kod sayfaları artık Unicode kullanan programlar için geçerli , Windows API Unicode versiyonlarını dahili ve arayın.

Özellikle, bu belirler aktif kod sayfaları yani, karakter kodlayan varsayılan olarak kullanılır :

  • ANSI kod sayfası Unicode olmayan programların arasında, özellikle ANSI sürümü, Windows API Unicode olmayan (ANSI) sürümleri çağırdığınızda kullanmak TextOutiçin ve özellikle Unicode gelen dizeleri tercüme için fonksiyonu programın dizeleri render nasıl belirler GUI .

  • tarafından yansıtılan konsol pencerelerinde varsayılan olarak etkin hale getirmek için OEM kod sayfası .chcp

    • Bir konsol penceresinin etkin kod sayfası , konsol uygulamalarından klavye giriş ve çıkışının nasıl yorumlanacağını ve görüntüleneceğini belirler .
      • Bunun Unicode konsol uygulamalarından çıktının bile etkin kod sayfasına çevrildiği anlamına gelir ve bu da bilgi kaybına neden olabilir; 65001Unicode'un UTF-8 kodlamasını temsil eden sözde kod sayfasının kullanılması bir çözümdür, ancak eski komut satırı programlarının verileri yanlış yorumlamasına ve hatta başarısız olmasına neden olabilir - ayrıntılar için bu StackOverflow yanıtına bakın.
    • ANSI kod sayfası aksine, sen yapabilirsiniz belirli bir konsol penceresi için talep üzerine aktif [OEM] kod sayfasını değiştirmek ; örneğin, OEM kod sayfasına geçiş için 850çalıştırın chcp 850içinde cmd.exeve $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [text.encoding]::GetEncoding(850)PowerShell.
  • buna ek olarak, nadiren artık EBCDIC ve Mac kod sayfaları kullanılır.

Eski terimde kullanılan yerel ayar kelimesine ve mevcut terimdeki kelime diline rağmen:

  • Sadece ayarı tarafından kontrol edilen yönleri aktif kod sayfalarının seti ve varsayılan bitmap font , değil de (kullanıcı düzeyinde yerel ayarlarına tarafından kontrol edilir) bir yerel diğer unsurları.

  • Belirli bir kod sayfası genellikle birçok yerel ayar tarafından paylaşılır ve birden çok dili kapsar ; örneğin, yaygın olarak kullanılan 1252kod sayfası , İngilizce de dahil olmak üzere birçok Batı Avrupa dili tarafından kullanılmaktadır.

Denetim Masası üzerinden ayarını değiştirmek ne zaman Ancak, ayarı alabilirim yoluyla belirli bir yerele.

Tüm Windows kod sayfalarının listesi için bkz. Https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifiers


GetACP()işlevi - technet.microsoft.com/tr-tr/dd318070 - bu ilginç bir bağlantıdır, açıklama bölümü açıkça bu işlevin dönüş değerinin kullanıcının seçilen varsayılan giriş dilini ve GUI dilini temsil etmediğini ancak tamamen farklı bir şey olduğunu
söyler

Gerçekten de, @ Arioch'The - arka plan bilgileri bölümünde açıklamaya çalıştığım şey budur: sistem yerel ayarı (a) belirli bir kullanıcıya bakılmaksızın sistem genelinde kod sayfalarını (ancak başka bir yerel ayar yok) belirler (b) yerel ayar. Bağlantı verilen sayfanın nasıl belirtildiğine (vurgu eklenmiştir): " İşletim sistemi için geçerli Windows ANSI kod sayfası (ACP) tanımlayıcısını döndürür ". Potansiyel AppLocale 3. taraf değişimine gelince: Cevaba bir bağlantı ekledim.
mklement

1
GetACP sözler / bağlantı Ben MBCS-Unicode varsayılan dönüşüm bazı Windows sürümlerinde sadece uygulama detay değil, kullanıcı bağımsız ve OS-global olarak tasarlanmıştır "tanrı kelimesi" onayı olarak önemli olduğunu düşünüyorum .
Arioch '

1
Muhtemelen bugün hem UNIX öncesi MAC hem de EBCDIC eşit olarak "sadece bazı tarihi öneme sahip" nişlere aittir. Ancak bu MAC CP'ye biraz bağlıyım, çünkü hem UNIX hem de DOS-Win-OS / 2 ağaçlarından farklı olarak düz metin dosyalarında yeni satırlar işaretlemenin başka bir varyantını yapmayı başardılar. Ezberlediğim egzotik köşe davasıydı.
Arioch '

1
Teşekkürler. Daha güncel bir bağlantı - docs.microsoft.com/en-us/windows/desktop/Intl/… - ve EBCDIC "Windows 2000" olarak işaretlenmiştir - bu nedenle w2k'den önce muhtemelen yoktu ve o zamandan beri hiç kimse rahatsız etmedi başlık dönüşüm dönüşüm kaynaklarını güncellemek için nasıl :-D
Arioch 'The


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.