Непонятные символы

Поиск кодировок, доступных в Word

Word распознает несколько кодировок и поддерживает кодировки, которые входят в состав системного программного обеспечения.

Ниже приведен список письменностей и связанных с ними кодировок (кодовых страниц).

Система письменности

Кодировки

Используемый шрифт

Многоязычная

Юникод (UCS-2 с прямым и обратным порядком байтов, UTF-8, UTF-7)

Стандартный шрифт для стиля «Обычный» локализованной версии Word

Арабская

Windows 1256, ASMO 708

Китайская (упрощенное письмо)

GB2312, GBK, EUC-CN, ISO-2022-CN, HZ

Китайская (традиционное письмо)

BIG5, EUC-TW, ISO-2022-TW

Кириллица

Windows 1251, KOI8-R, KOI8-RU, ISO8859-5, DOS 866

Английская, западноевропейская и другие, основанные на латинице

Windows 1250, 1252-1254, 1257, ISO8859-x

Греческая

Японская

Shift-JIS, ISO-2022-JP (JIS), EUC-JP

Корейская

Wansung, Johab, ISO-2022-KR, EUC-KR

Вьетнамская

Индийские: тамильская

Индийские: непальская

ISCII 57002 (деванагари)

Индийские: конкани

ISCII 57002 (деванагари)

Индийские: хинди

ISCII 57002 (деванагари)

Индийские: ассамская

Индийские: бенгальская

Индийские: гуджарати

Индийские: каннада

Индийские: малаялам

Индийские: ория

Индийские: маратхи

ISCII 57002 (деванагари)

Индийские: панджаби

Индийские: санскрит

ISCII 57002 (деванагари)

Индийские: телугу

Для использования индийских языков необходима их поддержка в операционной системе и наличие соответствующих шрифтов OpenType.

Для непальского, ассамского, бенгальского, гуджарати, малаялам и ория доступна только ограниченная поддержка.

Смена кодировки текста в Microsoft Word

Набор символов, которые мы видим на экране при открытии документа, называется кодировкой. Когда она выставлена неправильно, вместо понятных и привычных букв и цифр вы увидите бессвязные символы. Эта проблема часто возникала на заре развития технологий, но сейчас текстовые процессоры умеют сами автоматически выбирать подходящие комплекты. Свою роль сыграло появление и развитие utf-8, так называемого Юникода, в состав которого входит множество самых разных символов, в том числе русских. Документы в такой кодировке не нуждаются в смене и настройке, так как показывают текст правильно по умолчанию.

Современные текстовые редакторы определяют кодировку при открытии документа

С другой стороны, такая ситуация всё же иногда случается. И получить нечитаемый документ очень досадно, особенно если он важный и нужный. Как раз для таких случаев в Microsoft Word есть возможность указать для текста кодировку. Это вернёт его в читаемый вид.

RTL с кодовой страницей UTF-8 по умолчанию

По умолчанию RTL использует системную кодовую страницу для AnsiStrings (в таких операциях, как например FileExists и TStringList.LoadFromFile). Под Windows это не-Unicode кодировка, поэтому могут использоваться только символы из текущей языковой группы (не более 256 символов).
LCL, с другой стороны, работает с кодировкой UTF-8, охватывающей весь диапазон Unicode. Под Linux и macOS UTF-8 обычно является системной кодовой страницей, и здесь RTL использует по умолчанию CP_UTF8.

FPC, начиная с версии 3.0, обеспечивает API для изменения кодовой страницы RTL по умолчанию на другое значение. Lazarus (конкретно пакет LazUtils) использует данный API и изменяет кодовую страницу RTL по умолчанию на UTF-8 (CP_UTF8). Это означает, что пользователи Windows также могут теперь использовать строки UTF-8 в RTL.

Например, FileExists и StringList.LoadFromFile(Filename) теперь имеют полную поддержку Unicode. См. Полный перечень функций, которые полносттью поддерживают Unicode, здесь:

  • AnsiToUTF8, UTF8ToAnsi, SysToUTF8, UTF8ToSys не работают (не изменяют передаваемых данных). Эти функции обычно использовались для упомянутых выше функций RTL, которые больше не нуждаются в преобразованиях. Относящееся к функциям WinAPI, см ниже.
  • Многочисленные вызовы UTF8Encode и UTF8Decode больше не требуются, потому что такие действия при присваивании значений UnicodeString переменным типа String и наоборот компилятор делает автоматически.
  • При работе с WinAPI необходимо использовать «W»-функции или пользоваться функциями UTF8ToWinCP и WinCPToUTF8. То же верно для библиотек, которые до сих пор используют Ansi WinAPI функции. Например, в FPC 3.0 и более ранних версиях в этом нуждается unit registry.
  • «String» и «UTF8String» — различные типы. Если вы присваиваете значение String переменной типа UTF8String, компилятор добавляет код для проверки совпадения кодировок. Это будет стоить дополнительного времени исполнения и увеличит размер кода. Просто используйте String вместо UTF8String.
  • Консоль Windows использует кодировку, которая может отличаться от системной (в случае русского языка это всегда именно так). writeln в FPC 3.0+ автоматически преобразует строки UTF-8 в кодовую страницу консоли. Некоторые консольные программы Windows ожидают на входе строки в кодировке консоли и результаты своей работы также выдают в кодовой странице консоли. Для соответствующего преобразования можно использовать функции UTF8ToConsole и ConsoleToUTF8.

Дополнительная информация о новинках поддержки Unicode в FPC:
FPC Unicode support

Использование

Следуйте простым правилам:

  • Используйте как обычно тип «String» вместо UTF8String или UnicodeString.
  • Всегда присваивайте константу переменной типа String.
  • Используйте тип UnicodeString явно для вызовов API, когда это необходимо.

Эти правила делают большую часть кода уже совместимым с Delphi при использовании настроек проекта по умолчанию.

Немного лирики о том, почему всё так, а не иначе:

Но и для пользователей, остающихся обычными «пользователями ПК» проблема с кодировками кириллистических символов иногда встаёт довольно остро. «Кракозяблики» — наследие предыдущей эпохи, когда каждый программист писал собственную таблицу кодировок. Например, скачал и хочешь почитать интересную книжку, а тут такое >=O

И так продолжалось до тех пор, пока не начали вводиться стандарты. Но и стандартов на текущее время уже немало. Например, есть кодировка Unicode, есть UTF-8, есть UTF-16 и так далее…

Итак, для того, чтобы поменять кодировку создаваемых текстовых документов по умолчанию, нам понадобиться внести изменения в Реестр Windows.

В данной статье рассмотрен пример для файлов с расширением , а т.к. в Windows программой, открывающей эти файлы по умолчанию является Блокнот, то некоторые считают, что меняют кодировку по умолчанию в самом Блокноте. Но это не так. Меняется кодировка по умолчанию создаваемого файла. Блокнот лишь открывает документ, считывая уже прописанную в нём кодировку. В самом Блокноте прошита кодировка ANSI. И, похоже, это не поменять средствами Реестра Windows.

Как бы Windows не старался насаждать свои стандарты, большинство современных серверов работают на *nix операционных системах потому, что эти системы имеют открытый код и не имеют «корпоративной тайны на семью печатями». То есть, в них можно разобраться самостоятельно: что и как работает. Думаю, и дальше будет такая же тенденция. Все более-менее «продвинутые пользователи ПК» будут использовать программное обеспечение с открытым кодом для работы, и программы «из пакетов» для быстрой обработки данных (чтобы не изобретать велосипедов). На *nix операционных системах на текущий момент кодировкой по умолчанию является кодировка . Её можно без особых заморочек выставить другой, но зачем, если она на большинстве серверов и они нормально друг с другом *nix «общаются»? У меня на сервере тоже стоит  и это удобно. Поэтому задача у меня стояла, как сменить кодировку в Блокноте по умолчанию для Windows с на общепринятую .

Ну и хватит лирики. К делу!

Сперва удостоверимся в том, что в Блокноте стоит по умолчанию кодировка , для этого достаточно «Сохранить как…» любой документ и увидеть его кодировку:

Сложные решения

К этим решениям стоит переходить, если проблема никак отказывается уходить и продолжает досаждать. Иероглифы вместо русских букв устройство печатает по причинам, которые будут разобраны ниже.

Дело может быть в системных файлах. Их восстановление может избавить от проблемы.

Открываем командную строку от имени администратора. Вбиваем команду «sfc /scannow» и жмём «Ввод».

Команда «sfc /scannow»

Ждём несколько минут или секунд. Затем проверяем, решилась ли проблема.

Часто такая ошибка появляется из-за драйверов. Принтер печатает иероглифы, поскольку драйверы неправильные или дают сбои. Поэтому можно попробовать их переустановить. Для этого:

Во вкладке Панели управления «Оборудование и звук» находим наш принтер.

Вкладка «Оборудование и звук»

  • Нажимаем ПКМ, выбираем «Удалить устройство».
  • В «Программах и компонентах» удаляем все программы, связанные с работой нашего аппарата.
  • После удаления находим диск, который идёт вместе с устройством печати. Снего заново устанавливаем все необходимые программы и драйверы.

Если диска у вас нет, то Windows 7 или старше, как правило, сама предлагает установить необходимые драйверы, если заново подключить принтер к компьютеру. Если этого не произошло, то стоит зайти на сайт компании-производителя и скачать необходимое ПО самостоятельно.

Проверьте компьютер антивирусом. Причина может крыться во вредоносном ПО.

Вот основные способы разрешения этой проблемы. Как правило, можно ограничиться простыми действиями, поскольку эта ошибка то появляется, то исчезает сама собой.

Интерфейс Visual Studio Code

При первом запуске перед нами отобразится окно приветствия, через которое можно получить быстрый доступ к ранее запущенным проектам либо создать новые. Весь интерфейс на английском языке (всего в несколько кликов он переводится на русский, но об этом чуть позже). Давайте пока разберемся с интерфейсом: откроем для примера файл с кодом, посмотрим, как его идентифицирует программа без предварительных настроек, и разберем каждый блок утилиты.

Запустить файл с кодом мы можем через правый клик мыши -> Открыть с помощью Code. Файл можно открыть и в программе: для этого в верхнем правом углу выбираем «File» и жмем «Open File…». После этого переходим в нужную директорию и выбираем файл.

В результате перед нами отобразится окно с кодом из файла. Давайте визуально разделим интерфейс на блоки и рассмотрим каждый из них более детально.

Первое, что бросается в глаза, – это блок кода, для которого отведено больше всего места. Название функций и прочее подсвечено разными цветами. Здесь же указан путь до файла, а чуть выше расположены вкладки-файлы, по которым можно перемещаться. С помощью них мы можем добавлять не просто один файл с кодом, а целый проект.

Следующий блок – левая панель управления, включающая в себя 5 основных вкладок: «Проводник», «Поиск», «Система управления версиями», «Запуск кода» и «Расширения». Первая предоставляет пользователю возможность просматривать содержимое проекта и быстро перемещаться внутри него.

Вторая вкладка – поиск. Используется для нахождения слов в документе. Он также может быть запущен с помощью комбинации клавиш «CTRL+SHIFT+F». Алгоритм использования довольно прост – вводим название в поиск и смотрим результат.

Система управления версиями – предназначена для взаимодействия с git.

Запустить и проверить работоспособность кода мы можем в следующей вкладке:

Еще одна важная вкладка, с помощью которой из Visual Studio Code можно сделать функциональную утилиту, это «Расширения». В ней находятся установочники для всех популярных инструментов, используемых разработчиками.

Следующий блок – нижний статус-бар. В нем отображается общая информация о состоянии программы

Обратите внимание, что VS Code автоматически определяет язык программирования и информирует нас об этом

И еще один раздел – правая панель, включающая в себя небольшой дисплей, который отображает код в уменьшенном варианте, а также позволяет удобно скроллить внутри него. Здесь же мы можем разделить окно кода на несколько столбцов, а также закрыть все файлы одним кликом – для этого используются две верхние кнопки.  

Как видите, если пройтись по интерфейсу программы, то она уже не кажется такой сложной. Чтобы сделать все еще проще, давайте проведем русификацию всех элементов интерфейса. О том, как это сделать, поговорим далее.

Настройка

VS Code готов к работе сразу после установки — в него по умолчанию добавлено большинство плагинов для веб-разработки. Можно сразу загрузить проект или начать программировать в новом файле. Нужно только привыкнуть к интерфейсу. 

Если вы раньше пользовались другим редактором и не удалили его с компьютера, то VS Code автоматически предложит перенести сохранённые настройки. Для переноса вам достаточно кликнуть на всплывающую подсказку и перезагрузить VS Code — переносятся плагины, расширения и установленные горячие клавиши. 

Если у вас ещё не было кодового редактора, то ниже мы рассмотрим несколько базовых настроек, которые помогут персонализировать интерфейс VS Code. 

Устанавливаем русский язык. На левой боковой панели нажмите Extensios и в строке поиска напишите Russian Language Pack — это языковой пакет, который адаптирует VS Code под русский язык. Выберите расширения, кликните Install и перезапустите редактор. У вас должен открыться русифицированный интерфейс.

Языковой пакет Russian Language Pack

Если после перезагрузки язык не изменился — на левой боковой панели нажмите значок шестерёнки и выберите раздел Command Palette. Появится строка поиска: напишите Display, выберите команду Configure Display Language и нажмите Enter. Смените язык с английского на русский и повторно перезагрузите редактор. 

Приветственное окно Visual Studio Code после установки языкового пакета

Меняем цветовую тему. В левой боковой панели нажмите на значок шестерёнки, перейдите в раздел «Цветовая тема» и выберите тему, встроенную в редактор. 

Если ничего не нравится — установите любую внешнюю тему, которую получится найти в интернете. Если тема совместима с VS Code, то после скачивания она сама откроется в редакторе и вам достаточно нажать «Установить». Начать поиск рекомендуем с официального маркетплейса, где собраны тысячи бесплатных тем.

Анна Леонова рекомендует тему Night Owl — ночная сова. Её мы и поставили для теста

Добавляем любимый шрифт. В боковой панели нажмите на шестерёнку, выберите раздел «Параметры» → «Текстовый редактор» → «Шрифт». Перед вами будет вкладка Font Family, в которую нужно вписать название выбранного шрифта — если этот шрифт скачан или сохранён в операционной системе, то он сразу отобразится в редакторе. Здесь же можно изменить размер и жирность шрифта. 

Меняем стандартный шрифт Visual Studio Code на Courier New

Включаем автосохранение. В боковой панели выберите шестерёнку, перейдите в «Параметры» → «Текстовый редактор» → «Файлы». Вы увидите вкладку Auto Save, в которой нужно указать период сохранения файлов. Мы рекомендуем режим afterDelay с задержкой в одну секунду — так вы будете сразу сохранять всё, что запишете. Если вы выберете режим onFocusChange, то изменения в рабочем файле будут сохраняться каждый раз, когда вы будете открывать другие вкладки редактора. В режиме onWindowChange изменения происходят сразу после того, когда вы сворачиваете VS Code и открываете окна других программ.

Включаем режим автосохранения и делаем так, чтобы файлы сохранялись ежесекундно

Автоформатирование кода

Один из важных этапов программирования – умение приводить все к единому виду с правильными отступами. Для таких задач в VS Code есть специальные плагины, позволяющие форматировать весь текстовый документ. Это такие расширения, как PHP-CS-Fixer для PHP, Prettier для JS/HTML/CSS и другие.

Рассмотрим, как форматируется код, написанный на JavaScript:

  1. Возьмем для примера функцию, отступы в которой выстроены случайным образом.
  2. Устанавливаем плагин Prettier через магазин расширений и открываем документ, который нужно отформатировать. Зажимаем комбинацию клавиш «CTRL+SHIFT+P» и вводим запрос «Format Document».
  3. Смотрим на код и видим, что он преобразился и принял аккуратный вид.

Аналогичным образом мы можем отформатировать код, написанный на других языках программирования. Для этого достаточно установить нужное расширение.

Применение в Lazarus

Новый режим включается автоматически при компиляции FPC 3.0+.
Это поведение может быть отключено директивой компиляции -dDisableUTF8RTL, детали см. на странице Lazarus with FPC3.0 without UTF-8 mode.

Если вы используете строковые литералы в новом режиме, ваши исходники всегда должны быть в кодировке UTF-8.
Однако, ключ -FcUTF8 на самом деле обычно не требуется. Дополнительные сведения приведены ниже, в разделе «Строковые литералы».

Что же на самом деле происходит в новом режиме? В секции предварительной инициализации вызываются две FPC функции, устанавливающие кодировку строк по умолчанию в исполняющих библиотеках FPC в UTF-8 :

 SetMultiByteConversionCodePage(CP_UTF8);
 SetMultiByteRTLFileSystemCodePage(CP_UTF8);

Кроме того, функции UTF8…() из LazUTF8 (LazUtils) устанавливаются в качестве функций обратного вызова для функций RTL, имена которых начинаются с Ansi…().

Почему бы не использовать UTF8String в Lazarus?

Кратко: потому что FCL не использует его.

Исчерпывающе:
UTF8String определен в модуле system как

UTF8String = type AnsiString(CP_UTF8);

Компилятор всегда предполагает, что он имеет кодировку UTF-8 (CP_UTF8), которая является многобайтовой кодировкой (то есть 1-4 байта на кодовую точку)

Обратите внимание, что оператор [] обращается к байтам, а не к символам или кодовым точкам. То же самое для UnicodeString, но только слова вместо байтов.
С другой стороны, предполагается, что String во время компиляции имеет DefaultSystemCodePage (CP_ACP)

DefaultSystemCodePage определяется во время выполнения, поэтому компилятор консервативно полагает, что String и UTF8String имеют разные кодировки. Когда вы присваиваете или комбинируете String и UTF8String, компилятор вставляет код преобразования. То же самое для ShortString и UTF8String.

Lazarus использует FCL, который использует String, поэтому использование UTF8String добавит конверсии. Если DefaultSystemCodePage не UTF-8, вы теряете символы. Если это UTF-8, то нет смысла использовать UTF8String.

UTF8String станет полезным, когда в конце концов появится FCL UTF-16.

Функции кодовых точек для кодирования независимого кода

В пакете LazUtils есть модуль LazUnicode со специальными функциями для работы с кодовыми точками, независимо от кодировки.
Они используют функции UTF8…() из LazUTF8 при использовании в режиме UTF-8, и функции UTF16…() из LazUTF16 при использовании в {$ModeSwitch UnicodeStrings} FPC или в Delphi (да, Delphi поддерживается!).

В настоящее время {$ModeSwitch UnicodeStrings} можно протестировать, задав «UseUTF16».
Также есть тестовая программа LazUnicodeTest в каталоге components/lazutils/test. Она имеет 2 режима сборки, UTF8 и UTF16, для удобства тестирования. Тестовая программа также поддерживает Delphi, тогда, очевидно, используется режим UTF-16.

LazUnicode позволяет одному исходному коду работать между:

  • Lazarus с его UTF-8 решением.
  • Будущие FPC и Lazarus с Delphi-совместимым решением UTF-16.
  • Delphi, где String = UnicodeString.

Это обеспечивается перечисленными ниже функциями, не зависящим от кодирования:

  • CodePointCopy() — аналогична UTF8Copy()
  • CodePointLength() — аналогична UTF8Length()
  • CodePointPos() — аналогична UTF8Pos()
  • UnicodeToWinCP() — аналогична UTF8ToWinCP()
  • WinCPToUnicode() — аналогична WinCPToUTF8()

Этот режим также предоставляет перечислитель для кодовых точек, который компилятор использует для цикла for-in.
В результате, независимо от кодировки, этот код работает:

 var s, ch String;
 ...
 for ch in s do
   writeln('ch=',ch);

Delphi не предоставляет аналогичные функции для CodePoints в своем решении UTF-16.
Практически большая часть кода Delphi рассматривает UTF-16 как кодировку с фиксированной шириной, что привело к возникновению большого количества неработающего кода UTF-16.
Это означает, что использование LazUnicode также для Delphi улучшит качество кода!

Для использования Delphi необходимы оба модуля LazUnicode и LazUTF16.

Строковые литералы

Исходный код должен сохраняться в кодировке UTF-8. Lazarus создает такие файлы по умолчанию.
Вы можете изменять кодировку импортированных файлов, щелкая правой кнопкой мыши в редакторе исходного кода / File Settings (Настройки файла) / Encoding (Кодировка).

Обычно директива не требуется. Это довольно нелогично, поскольку значение этого флага заключается в обработке строковых литералов как UTF-8. Однако новый режим UTF-8 переключает кодирование во время выполнения, а константы оцениваются во время компиляции.

Таким образом, без компилятор (ошибочно) считает, что строковая константа кодируется системной кодовой страницей. Затем он видит переменную String с кодировкой по умолчанию (которая будет изменена на UTF-8 во время выполнения, но компилятор этого не знает). Таким образом, то же для кодировки по умолчанию, преобразование не требуется, компилятор с радостью копирует символы, и все идет хорошо, в то время как на самом деле его дважды обманывали в течение процесса.

Пример:

По правилу шаловливых ручек, используйте тип «String» и заставляйте литералы работать.

const s1 = 'äй';
const s2 string = #$C3#$A4; // ä
var s3;
...
  s3 := 'äöü';

Примечание: Строка UTF-8 может состоять из чисел, как это продемонстрировано для s2.

Литералы AnsiString/String работают как с директивой {$codepage utf8} / -FcUTF8 , так и без неё.

const s string = 'äй';

Литералы ShortString работоспособны только без указания директивы {$codepage utf8} / -FcUTF8. Вы можете сделать следующее:

unit unit1;
{$Mode ObjFPC}{$H+}
{$modeswitch systemcodepage} // прекращает действие директивы -FcUTF8
interface
const s string15 = 'äй';
end.

В качестве альтернативы, возможно использовать строки shortstring с включенной директивой $codepage путем прямого присвоения кодов символов:

unit unit1;
{$Mode ObjFPC}{$H+}
{$codepage utf8}
interface
const s String15 = #$C3#$A4; // ä
end.

WideString/UnicodeString/UTF8String работают только с {$codepage utf8} / -FcUTF8.

unit unit1;
{$Mode ObjFPC}{$H+}
{$codepage utf8}
interface
const ws WideString = 'äй';
end.

Присвоение строкового литерала другим строковым типам, кроме простого «String», более мудрено.
Смотрите таблицы, что работает, а что нет.

Настраиваем внешний вид редактора

Итак, мы уже установили VS Code и несколько расширений. Теперь мы готовы настраивать среду разработки. Я создал шаблон для спортивного программирования в VS Code и загрузил его в свой профиль на Github.

Перейдите по этой ссылке и загрузите шаблон себе на компьютер. Распакуйте его в любое место по вашему выбору. После этого откройте получившуюся папку в VS Code. Вы должны увидеть что-то вроде этого:

Пройдитесь по файлам main.cpp, Main.java и main.py и посмотрите на записанный в них образец кода. По сути, шаблонный код, предоставленный в образцах для каждого из этих трех языков, принимает входящие данные из файла input.txt и обеспечивает вывод в файл output.txt. Для каждой программистской задачи, которую вы хотите решить, просто создайте копию этого шаблона и напишите свой код в функции solve().

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

  • Откройте файлы в следующем порядке: main.cpp, input.txt, output.txt. Порядок, в каком были открыты файлы, можно видеть сверху на панели инструментов. Убедитесь, что порядок именно такой, как указано выше.
  • Откройте input.txt. Выберите в меню View -> Editor Layout -> Split Right. Вы должны увидеть что-то подобное:

У вас получится две группы. Перетащите output.txt из левой группы в правую. Закройте тот input.txt, что остался слева. Должно выйти примерно так:

Далее откройте output.txt в правой группе. Выберите View -> Editor Layout -> Split Down. Уберите output.txt из верхней группы. После этого вы увидите:

Готово! Мы настроили внешний вид редактора. А теперь давайте запускать код.

Меняем кодировку в MS Word и других приложениях

Чтение некоторых файлов без перекодировки или нормального кодировщика просто невозможно. Но вам не понадобится устанавливать каких-то специальных приложений. Все средства кодировки доступны, просты и уже имеются на вашем компьютере.

Текстовые документы различаются не только форматом, но и кодировкой. Обычно текст сохраняется в стандартной кодировке Виндовс. Но иногда требуется его перекодировать. Возможен и другой вариант: изначальный код не распознается (когда пере вами набор каких-то непонятных символов) и нужно изменить кодировку текста в word на читаемую. Чтобы это сделать, будет достаточно ресурсов самого офисного приложения.

Сохранение файлов в другой кодировке

Вы не можете изменить кодировку файла, который вы сохраняете как файл .docx. Word назначит кодировку символов по умолчанию на основе вашей региональной языковой установки или UTF-8. Однако вы можете изменить кодировку, изменив файл в текстовом формате.

  • Перейдите в меню «Файл» и выберите «Сохранить как».
  • Щелкните раскрывающийся список «Сохранить как тип» и выберите вариант «Обычный текст».

Сохранить документ Word в виде обычного текста

Нажмите кнопку «Сохранить», и Word откроет диалоговое окно «Преобразование файла», как описано выше. Оттуда вы можете изменить кодировку и сохранить документ.

Как исправить кракозябры и иероглифы в Windows 10

  1. Нажмите Win + R и введите control. Система откроет классическую Панель управления.
  2. На главной странице перейдите в группу Часы, язык и регион – Изменение форматов даты, времени и чисел.
  3. На открывшемся окне Регион откройте вкладку Дополнительно.
  4. Нажмите кнопку Изменить язык системы в секции окна Язык программ, не поддерживающих Юникод.
  5. В открывшемся окошке выберите из выпадающего списка необходимый вам язык, к примеру, Русский (Россия). Нажмите Ок.
  6. Windows предупредит вас, что необходимо перезагрузить компьютер, чтобы изменения вступили в силу. Согласитесь на перезагрузку сейчас и нажмите Перезагрузить сейчас.

После запуска компьютера текст должен отображаться как положено.

Настраиваем расширения

Ниже приведен список расширений, которые нам понадобятся для правильной настройки VS Code. Откройте VS Code и перейдите на панель расширений (Ctrl + Shift + X), которая находится на левой панели инструментов, и начните загружать друг за другом следующие расширения:

C / C++ от Microsoft —  Для корректной работы этого расширения нам понадобится установленный и добавленный в PATH компилятор MinGW. Если у вас его нет, следуйте этому руководству.

C++ Intellisense от austin.

Python от Microsoft — вам нужно будет настроить Python для работы этого расширения

Загрузите и установите последнюю версию отсюда.

Java Extension Pack от Microsoft —  Перед установкой убедитесь, что в вашей системе настроены Java 8 JDK и JRE и указаны все необходимые переменные среды для Java. Если нет, посмотрите это видео о том, как настроить Java на вашем компьютере.

Code Runner от Jun Han — мы будем использовать это расширение для запуска всех наших программ. Для этого необходимо выполнить некоторые шаги по настройке. Мы увидим эти шаги в следующих разделах.

Расширения, перечисленные ниже, необязательны для дальнейшей настройки, но я рекомендую вам обратить на них внимание, посмотреть, заинтересуют ли они вас, и если нет, то перейти к следующему разделу. (Необязательно)Material Theme от Mattia Astronio — это расширение содержит множество приятных глазу тем

Вы можете выбрать любую, какая понравится. Лично я предпочитаю Monokai, которая доступна в VS Code по умолчанию, без каких-либо расширений

(Необязательно)Material Theme от Mattia Astronio — это расширение содержит множество приятных глазу тем. Вы можете выбрать любую, какая понравится. Лично я предпочитаю Monokai, которая доступна в VS Code по умолчанию, без каких-либо расширений.

Чтобы выбрать тему, нажмите Ctrl + Shift + P. Откроется палитра команд. Осуществите поиск по слову “theme” и выберите опцию Color Theme. Чтобы настроить иконки, можете выбрать опцию File Icon Theme.

Расширения для тех, кто интересуется FrontEnd-фреймворками для веб-разработки, такими как Angular и React:

  • (Необязательно) Angular Language Service от Angular.
  • (Необязательно) Angular Snippets от John Papa.
  • (Необязательно) ES7 React / Redux / GraphQL / React-Native snippets от dsznajder.
  • (Необязательно) React Native Tools от Microsoft.
  • (Необязательно) Live Server от Ritwick Dey.

Кодировка набора символов Visual Studio

Когда мы работаем с кодировкой последовательности символов, у нас есть разные типы стандартов кодирования, такие как стандарты однобайтового кодирования (ASCII и Extended ASCII), стандарты многобайтового кодирования (Shift-JIS, Unicode 16 и . ), а также стандарты Unicode 32, которые Это заметно в современном программировании и разработке программного обеспечения, но в среде Visual Studio у нас есть только многобайтовая кодировка и Unicode.

У меня вопрос: как мне работать со стандартами кодирования переменной длины в среде Visual Studio? Поддерживает ли он эти типы стандартов кодирования? Если да, как я могу использовать это в визуальной студии или даже в другой среде для целей обучения? Например, как мы можем использовать кодировку UCS 2 или UTF16 в среде Microsoft Visual Studio для разработки на C ++?

Строки :

  • string : тип, который описывает специализацию класса шаблона basic_string с элементами типа char
  • u16string : тип, который описывает специализацию класса шаблона basic_string с элементами типа char16_t .
  • u32string : тип, который описывает специализацию класса шаблона basic_string с элементами типа char32_t .
  • wstring : тип, который описывает специализацию класса шаблона basic_string с элементами типа wchar_t .

Символьные литералы

  • Обычные символьные литералы типа char , например ‘a’
  • Символьные литералы UTF-8 типа char , например u8’a’
  • Литералы с широкими символами типа wchar_t , например L’a’
  • Символьные литералы UTF-16 типа char16_t , например u’a’
  • Символьные литералы UTF-32 типа char32_t , например U’a’

Кодировка:

Символьный литерал без префикса является обычным символьным литералом . Значение обычного символьного литерала, содержащего один символ, escape-последовательность или универсальное имя символа, которое может быть представлено в наборе символов выполнения, имеет значение, равное числовому значению его кодировки в наборе символов выполнения. Обычный символьный литерал, содержащий более одного символа, escape-последовательность или универсальное имя символа, является многосимвольным литералом. Многосимвольный литерал или обычный символьный литерал, который не может быть представлен в наборе символов выполнения, поддерживается условно, имеет тип int, а его значение определяется реализацией.

Символьный литерал, начинающийся с префикса L , является литералом расширенных символов . Значение литерала с расширенными символами, содержащего один символ, escape-последовательность или универсальное имя символа, имеет значение, равное числовому значению его кодировки в наборе расширенных символов выполнения, если только символьный литерал не имеет представления в расширенном исполнении. набор символов, и в этом случае значение определяется реализацией. Значение литерала для широких символов, содержащего несколько символов, escape-последовательности или универсальные имена символов, определяется реализацией.

Символьный литерал, начинающийся с префикса u8 , является символьным литералом UTF-8 . Значение символьного литерала UTF-8, содержащего один символ, escape-последовательность или универсальное имя символа, имеет значение, равное его значению кодовой точки ISO 10646, если оно может быть представлено одной единицей кода UTF-8 (соответствует C0 Элементы управления и блок Basic Latin Unicode). Если значение не может быть представлено одной единицей кода UTF-8, программа имеет неправильный формат. Символьный литерал UTF-8, содержащий более одного символа, escape-последовательность или универсальное имя символа, имеет неправильный формат.

Символьный литерал, начинающийся с префикса u , является символьным литералом UTF-16 . Значение символьного литерала UTF-16, содержащего один символ, escape-последовательность или универсальное имя символа, имеет значение, равное значению его кодовой точки ISO 10646, если оно может быть представлено одной единицей кода UTF-16 (соответствующей базовой многоязычный самолет). Если значение не может быть представлено одной единицей кода UTF-16, программа имеет неправильный формат. Символьный литерал UTF-16, содержащий более одного символа, escape-последовательность или универсальное имя символа, имеет неправильный формат.

Символьный литерал, начинающийся с префикса U , является символьным литералом UTF-32 . Значение символьного литерала UTF-32, содержащего один символ, escape-последовательность или универсальное имя символа, имеет значение, равное его значению кодовой точки ISO 10646. Символьный литерал UTF-8, содержащий более одного символа, escape-последовательность или универсальное имя символа, имеет неправильный формат.

Что делать, чтобы сменить кодировку в Блокноте по умолчанию с ANSI на другую:

  1. Открываем Блокнот или создаём новый текстовый документ и потом его открываем в Блокноте
  2. Меняем кодировку текстового файла
  3. Сохраняем этот документ (я свой назвал по названию кодировки )
    1. Если не видно расширение файла, то можно его сделать видимым
    2. Можно сохранить файл и переименовать
  4. Перемещаем созданный документ в папку (сразу создать текстовый документ в этой папке не получится — защита Windows от внесения изменений в системные папки)
    1. Если папки нет (что мало вероятно), то её нужно создать и также переместить на место: 
  5. Теперь открываем редактор реестра
  6. Находим папку  / / / (она должна быть, если нет, то создаём)
  7. Создаём строковый параметр:
    1. С именем
    2. Со значением (имя того файла, который мы создали в п.3 перенесли в папку в п.4)
  8. Радуемся! Ибо это всё =)

Теперь при создании текстового файла с помощью контекстного меню у него будет та кодировка, которая была нами установлена в файле-образце, лежащем в папке . Проверяем:

Всё работает! =)

Что случится, если я использую {$codepage utf8}?

FPC имеет очень ограниченную поддержку UTF-8. Фактически, FPC поддерживает хранение литералов только как 8-битные строки с кодировкой «по умолчанию» или как widestrings (широкие строки). Поэтому любая кодовая страница не по умолчанию преобразуется в widestrings, даже если это системная кодовая страница. Например, большинство Linux/Mac/BSD используют UTF-8 в качестве системной кодовой страницы. Передача -Fcutf8 в компилятор сохранит строковый литерал как widestrings.

Во время выполнения widestring литерал конвертируется. Когда вы присваиваете литерал AnsiString, widestring литерал преобразуется с помощью widestringmanager в кодировку системы. По умолчанию widestringmanager под Unix просто конвертирует widechars в символы, уничтожая любые символы не ASCII. Вы должны использовать widestringmanager, например, cwstring, чтобы получить правильное преобразование. Модуль LazUTF8 делает это.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: