Ustawienie UTF8 jako domyślnego kodowania znaków w Windows 7
63
Czy istnieje sposób, aby ustawić system Windows 7 na globalne używanie UTF-8 w standardzie?
to naprawdę denerwujące, że każdy edytor tekstowy może z niego korzystać.
Więc chcesz powiedzieć coś systemowi operacyjnemu ... a następnie magicznie wszyscy redaktorzy to zauważą? :) Z ilu redaktorów korzystasz? Co 3 minuty kolejna? W każdym razie: superuser.com/questions/221593/windows-7-utf-8-and-unicode Z tego co wiem: Windows używa UTF16 wewnętrznie wszędzie i wątpię, czy można to zmienić.
akira
1
edytory, których używam: notatnik, notatnik ++, qt, eclipse, thunderbird, open office i kilka innych ... Nie mówię tylko o zwykłych edytorach tekstu, ale o wszystkim, co działa z tekstem i wyjściem. większość niezależnych od platformy edytorów tekstu używa standardu utf-8 w Linuksie, ale używa Latin-1 w systemie Windows.
Krótka odpowiedź brzmi: nie, nie jest to możliwe .
Mówiąc dokładniej, obawiam się, że nie znajdziesz globalnej opcji kodowania w Windows 7, która pozwala obojgu 1) ustawić globalne ustawienie domyślne, które 2) wszystkie wymienione aplikacje będą przestrzegane.
Chciałbym również zapytać, jaki jest tutaj problem, który próbujesz rozwiązać?
Od aplikacji zależy, czy będą używać wewnętrznego kodu Unicode do reprezentowania danych. Chociaż korzystanie z Unicode jest zalecane , możesz nigdy nie mieć pewności, że wszystkie twoje aplikacje faktycznie go obsługują.
Co można zrobić , to jednak zmienić domyślne kodowanie znaków dla każdej z wymienionych aplikacji:
W przypadku OpenOffice (i LibreOffice) tak naprawdę nie musisz nawet martwić się o kodowanie, ponieważ dokumenty zapisane przez OpenOffice są oparte na XML, w którym kodowanie jest określone wewnętrznie w plikach XML (a UTF-8 jest już tam również domyślna)
Z punktu widzenia UTF-8 PowerShell jest trudny. Ma domyślne kodowanie UTF-16LE.
Aby uzyskać pliki wyjściowe z PowerShell do UTF-8, zobacz tę odpowiedź
Aby zmienić domyślne kodowanie, zobacz tę odpowiedź
nie odpowiedź, którą chciałem uzyskać, ale myślę, że muszę żyć z prawdą, dziękuję =)
Baarn
do okien notatnika?
Mimouni,
23
Nie jest to możliwe głównie dlatego, że system Windows nie zezwala na UTF-8 jako systemową stronę kodową ANSI, mimo że ma stronę kodową ANSI dla UTF-8, strona kodowa 65001 . Wydaje się, że jest kilka powodów:
Kiedy Unicode był nowy, Microsoft zdecydował, że UCS-2 będzie najlepszym sposobem na obsługę Unicode. W tym czasie Unicode był 16-bitowy.
Strona kodowa 65001 nie wszędzie działa. W szczególności jest on zepsuty w przypadku niektórych funkcji MultiByte w systemie Windows, które oczekują, że znaki wielobajtowe będą wymagały jednego lub dwóch bajtów, podczas gdy UTF-8 wymaga od jednego do czterech bajtów. WriteFile()API na przykład zwraca niepoprawny wynik pod kodowej 65001 pęcherzyki, które się przez cały kod biblioteki powołując się na to, takie jak write().
Nieżyjący już Michael Kaplan, który pracował nad internacjonalizacją w Microsoft, miał blog „Sorting it all Out” , zawierający kilka postów na powiązane tematy. Wysłałem mu e-mailem bezpośrednio o niektórych z tych obaw w ciągu dnia.
Zauważ, że w czasach, gdy wymyślono Windows (NT), nie było UTF-8. Tak więc UCS-2 był naprawdę rozsądnym wyborem (i później niemożliwym do zmiany, z wyjątkiem UTF-16).
Joey,
2
Powodem jest to, że ustawienia narodowe UTF-8 mogą uszkodzić niektóre funkcje (możliwym przykładem jest _mbsrev), ponieważ zostały napisane, aby zakładać, że kodowanie wielobajtowe wykorzystuje nie więcej niż 2 bajty na znak, a zatem do tej pory strony kodowe z większą liczbą bajtów, takie jak GB 18030 (cp54936 ) i UTF-8 nie można ustawić jako ustawień regionalnych. . Ale przynajmniej teraz można ustawić ustawienia regionalne UTF-8 w systemie Windows 10
Odpowiedzi:
Krótka odpowiedź brzmi: nie, nie jest to możliwe .
Mówiąc dokładniej, obawiam się, że nie znajdziesz globalnej opcji kodowania w Windows 7, która pozwala obojgu 1) ustawić globalne ustawienie domyślne, które 2) wszystkie wymienione aplikacje będą przestrzegane.
Chciałbym również zapytać, jaki jest tutaj problem, który próbujesz rozwiązać?
Od aplikacji zależy, czy będą używać wewnętrznego kodu Unicode do reprezentowania danych. Chociaż korzystanie z Unicode jest zalecane , możesz nigdy nie mieć pewności, że wszystkie twoje aplikacje faktycznie go obsługują.
Co można zrobić , to jednak zmienić domyślne kodowanie znaków dla każdej z wymienionych aplikacji:
UTF-16LE
.źródło
Nie jest to możliwe głównie dlatego, że system Windows nie zezwala na UTF-8 jako systemową stronę kodową ANSI, mimo że ma stronę kodową ANSI dla UTF-8, strona kodowa 65001 . Wydaje się, że jest kilka powodów:
WriteFile()
API na przykład zwraca niepoprawny wynik pod kodowej 65001 pęcherzyki, które się przez cały kod biblioteki powołując się na to, takie jakwrite()
.Nieżyjący już Michael Kaplan, który pracował nad internacjonalizacją w Microsoft, miał blog „Sorting it all Out” , zawierający kilka postów na powiązane tematy. Wysłałem mu e-mailem bezpośrednio o niektórych z tych obaw w ciągu dnia.
źródło