60

Есть ли способ настроить Windows 7 на глобальное использование UTF-8 в качестве стандарта?
это действительно раздражает, чтобы каждый текстовый редактор использовал его.

2 ответа2

44

Краткий ответ - нет, это невозможно.

Чтобы уточнить, я боюсь, что вы не найдете глобальную опцию кодирования в Windows 7, которая позволит вам обоим 1) установить глобальное значение по умолчанию, которому будут подчиняться 2) все приложения, которые вы перечислили.

Кроме того, я хотел бы спросить, какую проблему здесь вы пытаетесь решить?

Приложение самостоятельно выбирает, используют ли они Юникод для представления данных. Хотя использование юникода приветствуется, вы никогда не можете быть уверены, что все ваши приложения действительно поддерживают его.

Однако вы можете изменить кодировку символов по умолчанию для каждого из перечисленных приложений:

  • Для Eclipse кодировка по умолчанию для новых файлов может быть установлена в Windows> «Установки»> «Основные»> «Типы содержимого» (см. Публикацию в Eclipse Community Forms).
  • Для Notepad++ перейдите в « Настройки»> «Установки»> «Новый документ / По умолчанию / Каталог» и установите для «Кодировка» значение UTF-8.
  • Что касается Thunderbird, я уверен, что он уже использует UTF-8 в качестве кодировки по умолчанию? (см. эти заметки о кодировке символов)
  • В случае OpenOffice (и LibreOffice) вам даже не нужно заботиться о кодировке, поскольку документы, сохраненные OpenOffice, основаны на XML, в котором кодировка указана внутри в XML-файлах (а UTF-8 уже по умолчанию там тоже)
  • С точки зрения UTF-8 PowerShell сложен. Он имеет кодировку по умолчанию UTF-16LE .
    • Для вывода файлов из PowerShell в UTF-8 см. Этот ответ
    • Для изменения кодировки по умолчанию смотрите этот ответ
20

Это невозможно в основном потому, что Windows не допускает UTF-8 в качестве системной кодовой страницы ANSI, даже если она имеет кодовую страницу ANSI для UTF-8, кодовую страницу 65001. Кажется, есть несколько причин для этого:

  • Когда Unicode был новым, Microsoft решила, что UCS-2 будет лучшим способом поддержки Unicode. В то время Unicode был 16-битным.
  • В Windows есть одна кодовая страница ANSI для каждого поддерживаемого языка, в отличие от Unix и Linux, где язык и кодировка могут быть установлены независимо.
  • Кодовая страница 65001 не работает везде. В частности, он не работает с некоторыми из поддержки многобайтовости в Windows, которые ожидают, что многобайтовые символы требуют один или два байта, тогда как UTF-8 требует от одного до четырех байтов. Например, API WriteFile() возвращает неверный результат под кодовой страницей 65001, которая всплывает через весь библиотечный код, полагаясь на него, такой как write().

У покойного Майкла Каплана, который работал над интернационализацией в Microsoft, был блог "Sorting it all Out", с несколькими постами на смежные темы. Я отправил ему электронное письмо о некоторых из этих проблем в тот день.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .