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ć.

Baarn
źródło
4
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.
Baarn
Nie w systemie Windows 7, ale jest to możliwe w systemie Windows 10
phuclv

Odpowiedzi:

45

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 Eclipse domyślne kodowanie nowych plików można ustawić w Windows> Preferencje> Ogólne> Typy treści (patrz post na Formularzach społeczności Eclipse )
  • W Notepad ++ przejdź do Ustawienia> Preferencje> Nowy dokument / Domyślny / Katalog i ustaw Kodowanie na UTF-8
  • Co do Thunderbirda, jestem pewien, że używa już UTF-8 jako domyślnego kodowania? (zobacz te uwagi na temat kodowania znaków )
  • 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.
jsalonen
źródło
4
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.
  • Windows ma jedną stronę kodową ANSI dla każdego obsługiwanego języka , w przeciwieństwie do Uniksa i Linuksa, gdzie język i kodowanie można ustawić niezależnie.
  • 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.

hippietrail
źródło
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
phuclv