Встановлення UTF8 як кодування символів за замовчуванням у Windows 7


63

чи є спосіб встановити Windows 7 на глобальне використання UTF-8 як стандарт?
це дуже прикро, щоб встановити кожен редактор тексту, щоб використовувати його.


4
Отже, ви хочете щось розповісти ОС .. а потім магічно всі редактори підбирають це? :) Скільки редакторів ви використовуєте? Кожні 3 хвилини ще один? У будь-якому випадку: superuser.com/questions/221593/windows-7-utf-8-and-unicode З того, що я знаю: Windows використовує UTF16 всередині себе всюди, і я сумніваюся, що ви можете це змінити.
акіра

1
редакторами, якими я користуюся: блокнот, блокнот ++, qt, затемнення, громовідвід, відкритий офіс та деякі інші ... Я не просто говорю про текстові редактори, а про все, що працює з текстом, що надходить і виводиться. Більшість незалежних текстових редакторів платформи використовують utf-8 як стандарт у Linux, але використовують Latin-1 у Windows.
Baarn

Не в Windows 7, але це можливо в Windows 10
phuclv

Відповіді:


45

Коротка відповідь - ні, це неможливо .

Для того, щоб уточнити, я боюся, що ви не знайдете в Windows 7 варіант глобального кодування, який дозволяє вам 1) встановити глобальний за замовчуванням, який 2) усі програми, які ви перерахували, підкорялися б.

Також я хотів би запитати, яка тут проблема, яку ви намагаєтеся вирішити?

Додаток повинен вибрати, чи використовувати вони Unicode внутрішньо для представлення даних. Хоча використання унікоду рекомендується , ви ніколи не можете бути впевнені, що всі ваші програми насправді підтримують його.

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

  • Для Eclipse кодування за новими файлами за замовчуванням можна встановити з Windows> Налаштування> Загальне> Типи вмісту (див. Пост у формах Eclipse Community Forms )
  • Для Notepad ++ перейдіть до Налаштування> Налаштування> Новий документ / за замовчуванням / Каталог та встановіть Кодування на UTF-8
  • Що стосується Thunderbird, я впевнений, що він вже використовує UTF-8 як кодування за замовчуванням? (див. ці примітки про кодування символів )
  • У випадку з OpenOffice (та LibreOffice) вам фактично навіть не потрібно піклуватися про кодування, оскільки документи, збережені OpenOffice, засновані на XML, в якому кодування визначено внутрішньо у XML-файлах (а UTF-8 вже є за замовчуванням також)
  • З точки зору UTF-8, PowerShell хитрий. Він має кодування за замовчуванням UTF-16LE.

4
не відповідь, на яку я сподівався отримати, але я думаю, що мені потрібно жити з правдою, дякую =)
Baarn

для вікон блокнота?
Мімуні

23

Це неможливо головним чином, тому що Windows не дозволяє UTF-8 як системну кодову сторінку ANSI, хоча у нього є кодова сторінка ANSI для UTF-8, кодова сторінка 65001 . Здається, для цього є кілька причин:

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

Покійний Майкл Каплан, який працював над інтернаціоналізацією в Microsoft, мав блог "Сортування все це" з кількома публікаціями на пов'язані теми. Я по електронній пошті прямо йому про деякі з цих проблем ще в той час.


Зауважте, що тоді, коли була задумана Windows (NT), UTF-8 не було. Тож UCS-2 насправді був дійсно розумним вибором (і змінити його згодом неможливо, крім UTF-16).
Джої

2
Причина полягає в тому, що локальний UTF-8 може порушити деякі функції (можливий приклад - _mbsrev), оскільки вони були написані для припущення багатобайтових кодувань, що використовуються не більше 2 байт на символ, таким чином, до цих пір кодові сторінки з більшою кількістю байтів, таких як GB 18030 (cp54936 ) і UTF-8 не вдалося встановити як локаль. . Але принаймні зараз можна встановити
локальність
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.