Jakie jest prawdziwe znaczenie okna dialogowego „Wybierz język odpowiadający wersji językowej programów nieobsługujących kodu Unicode, z których chcesz korzystać” w Panelu sterowania-> Ustawienia regionalne-> Zaawansowane w WinXP i Win2003?
Zgodnie z tekstem okna dialogowego system Windows użyje tego do wyświetlenia ciągów zasobów, takich jak menu. Traktowanie plików tekstowych jest specyficzne dla aplikacji, więc to ustawienie nie wpłynie na to.
Ale czy mogę spodziewać się jakiejkolwiek innej zmiany w zachowaniu z tego ustawienia? Jakieś spostrzeżenia na temat tego, co naprawdę dzieje się po zmianie tego ustawienia?
Edycja: Jaki jest wewnętrzny (np. Windows API) sposób uzyskania dostępu do wartości?
windows-xp
language
regional-settings
Joshua Fox
źródło
źródło
Odpowiedzi:
Szybka odpowiedź: system Windows używa tego ustawienia jako wskazówki do konwersji między starszymi 8-bitowymi znakami ASCII i nowoczesnymi 16-bitowymi znakami Unicode. Niektóre aplikacje nadużywają tego ustawienia, aby określić, który język interfejsu użytkownika powinien zostać wyświetlony.
Nie do końca prawda. Oto kilka przykładów: (po ustawieniu na język koreański dla programów nieobsługujących kodu Unicode „\” (odwrotny ukośnik) jest zastępowany przez „₩” (symbol waluty koreańskiej))
Podstawowe informacje:
System Windows służył do przechowywania ciągów z 8-bitowymi znakami ASCII. Oznacza to, że każdy znak używał 8 cyfr binarnych. To pozwoliło tylko na 256 różnych znaków; za mało, aby reprezentować wszystkie pisane języki świata. Dlatego różne regiony językowe postanowiły interpretować znaki 8-bitowe inaczej, aby pasowały do ich własnego języka (dodając akcentowane samogłoski, własny znak waluty oprócz „$” itp.). Nazywa się to kodowaniem. Aplikacje muszą wyraźnie informować system Windows, którego kodowania użyć; wiele programów tego nie robi, więc system Windows zakłada lokalne kodowanie dla tej wersji systemu Windows.
Teraz Windows przechowuje ciągi znaków z 16-bitowymi znakami Unicode. Każda postać używa dwa razy więcej bitów. Pozwala to na (prawie) 65 536 różnych znaków. Wciąż za mało, aby reprezentować wszystkie pisane języki świata, ale Unicode określa również sposób wybierania określonych zestawów znaków z dużo szerszej puli znaków.
Co teraz robi system Windows, gdy działa stary program, który nie zna Unicode? Windows musi przekonwertować między 8-bitowymi znakami ASCII i 16-bitowymi znakami Unicode. Windows może to zrobić całkiem dobrze, jeśli starsza aplikacja wyraźnie określa kodowanie, ale wiele aplikacji tego nie robi. Zatem Windows domyślnie przyjmuje ustawienie: Język dla programów nieobsługujących kodu Unicode.
Edycja: odpowiadanie na komentarze Jozuego
Tak i nie. Występuje coś, co nazywa się „ łączeniem czcionek ”, aby wyświetlać „₩”, gdy czcionka TrueType nie zawiera tego znaku. Tylko „₩” jest wyświetlane inną czcionką. Jednak w przypadku czcionek innych niż TrueType używana jest zupełnie inna czcionka (na przykład w konsoli cmd). Symbole walut są bardzo szczególnym przypadkiem. System Windows wykonuje dodatkową pracę, zastępując symbol „\” symbolem lokalnej waluty, aby zachować zachowanie poprzednich wersji systemu Windows.
Czcionki systemu Windows są również zmieniane za pomocą czegoś zwanego „ zastępowaniem czcionek ”. W takim przypadku czcionki systemowe są całkowicie zastępowane nową czcionką (chociaż nazwa czcionki pozostaje taka sama). Z mojego doświadczenia z koreańskimi ustawieniami narodowymi nowa podstawiona czcionka nie wygląda tak ładnie jak oryginalna czcionka.
Miałem rzadkie doświadczenia, w których używanie koreańskich ustawień narodowych powodowało nieprawidłowe działanie aplikacji. Jedna aplikacja, którą pamiętam, była narzędziem podglądu wyrażeń regularnych. Po prostu nie dało to prawidłowych wyników, gdy w koreańskich ustawieniach narodowych (a może nawet by się nie uruchomiło?) Musiałem przełączyć się na ustawienia amerykańskie, ilekroć chciałem używać tego programu.
źródło
Źródło .
Lub:
z Aby wyświetlić programy inne niż Unicode w swoim języku ojczystym .
Więcej informacji na stronie Language for Non-Unicode Programs .
źródło