-->

понедельник, 18 января 2016 г.

Visual Studio 2015 и кириллица

Проблема: Visual Studio 2015 некорректно отображает кириллические комментарии в коде, заменяя их на "кракозябры" вида Äæèãóðäà. При этом в Visual Studio 2013 комментарии отображаются нормально. Дискуссия о пользе и вреде кириллицы в комментариях стоит отдельного поста, а сейчас я бы хотел описать способ решения данной проблемы, который сработал для нашей небольшой команды.

Прежде всего, в глаза бросилось то, что "пораженные" файлы с присутствием кириллицы сохранены в кодировке Windows-1251, тогда как вся остальная часть проекта - в UTF-8. А "кракозябры" возникают потому, что Visual Studio читает файл, ранее сохраненный в кодировке Windows-1251 как файл в кодировке Windows-1252 (Western European). Этот баг достаточно просто эмулировать в Notepad++:

  1. Создаем новый файл, пишем кириллический текст;
  2. Устанавливаем кодировку в Windows-1251: Encoding - Character sets - Cyrillic - Windows-1251;
  3. Сохраняем и закрываем файл;
  4. Вновь открываем файл;
  5. Устанавливаем кодировку в Windows-1252: Encoding - Character sets - Western European - Windows-1251;
Вот так привычное русское "Джигурда" превращается в загадочное "Äæèãóðäà". Отсюда вытекает первый способ решения проблемы: ручная или программная конвертация пораженных файлов в UTF-8. Что малопригодно для больших проектов, поэтому сразу перейду к следующим способам:
  • Оказывается, в компиляторе VS2015 есть баг, связанный с кодировкой, для его устранения необходимо установить Visual Studio 2015 Update 1 (доступен в Extentions and Updates). Пруф: https://github.com/dotnet/roslyn/issues/4022
  • Студия по-умолчанию использует настройки ОС для решения проблем с кодировкой. Необходимо настроить Windows: для русскоязычной версии (о ужас) идем «Языки и рег. стандарты - Дополнительно - Изменить язык системы» и устанавливаем русский язык.
Вышеописанных двух действий оказалось достаточно, чтобы полностью устранить проблему с кодировкой внутри команды, при этом на некоторых компьютерах с уже установленным сервис-паком баг не наблюдался вовсе, У нас даже остался неиспользованный туз в рукаве: установка расширения ForceUTF8, позволяющего принудительно сохранять в UTF-8 файлы, редактируемые Visual Studio. К сожалению, в штатном функционале Студии такая настройка отсутствует, да и перед использованием этого расширения пораженные Windows-1251 файлы придется перекодировать самостоятельно.

(Бес)полезная информация:
  • Visual Studio позволяет вручную задать кодировку для сохраняемого файла через Save As - Save with Encoding (жмем на стрелочку возле клавиши Save);
  • Есть настройка Options - Environment - Documents - Save documents in Unicode when data cannot be saved in codepage. Пользы от нее не замечено.
На этом на сегодня всё, да не коснутся вас проблемы с кодировкой!

Комментариев нет:

Отправить комментарий