Windows-1251

Введение

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

В целом, локализация консоли Windows при наличии соответствующего языкового пакета не представляется сложной. Тем не менее, полное и однозначное решение этой проблемы, в сущности, до сих пор не найдено. Причина этого, главным образом, кроется в самой природе консоли, которая, являясь компонентом системы, реализованным статическим классом System.Console, предоставляет свои методы приложению через системные программы-оболочки, такие как командная строка или командный процессор (cmd.exe), PowerShell, Terminal и другие. По сути, консоль находится под двойным управлением — приложения и оболочки, что является потенциально конфликтной ситуацией, в первую очередь в части использования кодировок.

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

Неоспоримые плюсы UTF-8

  • старые кодировки, таких как cp1251 или KOI8R, предоставляли не более 256 символов, а в Unicode есть свыше 100 000 символов, среди них — типографские знаки (тире, кавычки, многоточие, апостроф, неразрывный пробел неразрывный дефис и прочие прикольные символы);
  • специальные символы №, §, , ‰, «», …,
    × и прочее. Например, это очень актуально на сайтах с кулинарной тематикой, где употребляются различные дробные меры такие как ½, ⅓, ¼, ⅔, ¾ и так далее. А как же быть с финансовой тематикой? Сейчас сложно представить нормальный сайт, где бы не указывался значки валют в ценниках, например, ȼ ¥ £ €. Повторите тоже самое на cp1251 или будете целые картинки подгружать вместо одного символа?
  • буквы с диакритическими знаками и лигатуры (é, è, Ü, Æ, ø, fi и прочее);
  • символы почти всех существующих в мире алфавитов (α, Ω, א, ת,, 伲, 儻 и прочее);
  • пиктограммы и значки (→, ■, , и прочее);
  • множество других полезных символов.

Самое классное в этом всем это то, что все эти символы можно вставлять непосредственно в редакторе (из таблицы символов или с помощью горячих клавиш), что делает код куда более читабельным, нежели использование кракозяб вроде µ — или π (альтернативы в cp1251).

Примечание: Помнится в конце 90 линуксоиды кричали, что KOI-8 рулит и победит cp1251, но как оказалось эта кодировка померла раньше.

  • Универсальность! Благодаря utf-8 можно создавать сайты без каких-либо переделок как для американцев, так и для немцев (с их буквочками вроде Ü), так и для арабов, так и для китайцев! И все равно, какая кодировка у них установлена, а какая нет, ибо Юникод у них установлен 100 процентов. Например, если у вас сайт публикует новости сразу на русском и немецком языке, то эту UTF с этим легко справляется, а вот уже на cp1251 это сделать невозможно.
  • Юникод является стандартом для работы таких часто используемых ныне функций PHP , как json_encode/json_decode, а так же используемого в AJAX XHttpRequest. Причем, начиная с 6й версии PHP Юникод станет стандартом для всех строковых функций. Поэтому на много быстрее и удобнее скармливать данные уже в UTF кодировке а не конвертировать постоянно, потому как все равно функции PHP и JavaScript будут это требовать. То есть, если вы хотите работать с такими технологиями как XML, JSON, AJAX и прочие современные технологии, то вам придется переходить на UTF-8, ибо со времен своего основания они работают только в этой кодировке.
  • Поисковые системы значительно лучше относятся к сайтам на UTF-8 кодировке, чем на какой-либо другой. Многие скажут, что это спорный момент, однако проводился эксперимент, на 10 сайтах. Один и тот же контент, тот же дизайн, тот же хостер, разные были только кодировки. Не поверите, но сайт на UTF кодировке стоял выше в поисковых позициях. Вот такой вот фокус.
  • Для быстрой индексации сайта в поисковых системах Yandex и Google используется файлик sitemap.xml, как ни странно, но работает он только если сделан в UTF, иначе поисковые системы ругаются.
  • И напоследок, многие ссылаются на то, что люди постепенно переходят на utf-8 потому, что «кто-то умный сказал, что это хорошо». Соглашусь, кто-то умный это сказал уже давно, а именно — Консорциум W3C (кому-то эти 3 буквы что-то говорят? И рекомендует он использовать для создания WEB страниц ни что иное, как utf-8. Для тех, кто знает английский (а есть программисты, кто его не знает? Можете почитать.

Самые распространенные кодировки

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

Поскольку самой распространенной и наиболее понятной в освоении всегда была операционная система Windows, то большинство веб-разработчиков создавали HTML-страницы в кодировке windows-1251 (ANSI), которая использовалась по-умолчанию. Но windows-1251 поддерживает не очень большое количество букв и символов, а разработчики хотят использовать в своих текстах различные стрелочки, сердечки, квадратики и другие символы, в том числе есть необходимость совмещать слова из разных языков в одном документе, поэтому на смену ей уже давно пришла более расширенная UTF-8 и большинство разработчиков используют именно эту кодировку.

Таблицы

Нижняя часть таблицы кодировки (латиница) полностью соответствует кодировке ASCII. Числа под буквами обозначают шестнадцатеричный код подходящего символа в Юникоде.

Кодировка Windows-1251

.1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
 8.  Ђ402 Ѓ403 201A ѓ453 201E 2026 2020 2021 20AC 2030 Љ409 2039 Њ40A Ќ40C Ћ40B Џ40F
 9.  ђ452 2018 2019 201C 201D 2022 2013 2014 2122 љ459 203A њ45A ќ45C ћ45B џ45F
 A.  A0 Ў40E ў45E Ј408 ¤A4 Ґ490 ¦A6 §A7 Ё401 A9 Є404 AB ¬AC ­AD AE Ї407
 B.  °B0 ±B1 І406 і456 ґ491 µB5 B6 ·B7 ё451 2116 є454 BB ј458 Ѕ405 ѕ455 ї457
 C.  А410 Б411 В412 Г413 Д414 Е415 Ж416 З417 И418 Й419 К41A Л41B М41C Н41D О41E П41F
 D.  Р420 С421 Т422 У423 Ф424 Х425 Ц426 Ч427 Ш428 Щ429 Ъ42A Ы42B Ь42C Э42D Ю42E Я42F
 E.  а430 б431 в432 г433 д434 е435 ж436 з437 и438 й439 к43A л43B м43C н43D о43E п43F
 F.  р440 с441 т442 у443 ф444 х445 ц446 ч447 ш448 щ449 ъ44A ы44B ь44C э44D ю44E я44F

Официальная кодировка Amiga-1251 (Amiga Inc., 2004 г.)

.1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
 A.  A0 ¡A1 ¢A2 £A3 20AC ¥A5 ¦A6 §A7 Ё401 A9 2116 AB ¬AC ­AD AE ¯AF
 B.  °B0 ±B1 ²B2 ³B3 ´B4 µB5 B6 ·B7 ё451 ¹B9 ºBA BB ¼BC ½BD ¾BE ¿BF

Официальная кодировка KZ-1048 (казахский стандарт)

.1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
 8.  Ђ402 Ѓ403 201A ѓ453 201E 2026 2020 2021 20AC 2030 Љ409 2039 Њ40A Қ49A Һ4BA Џ40F
 9.  ђ452 2018 2019 201C 201D 2022 2013 2014 2122 љ459 203A њ45A қ49B һ4BB џ45F
 A.  A0 Ұ4B0 ұ4B1 Ә4D8 ¤A4 Ө4E8 ¦A6 §A7 Ё401 A9 Ғ492 AB ¬AC ­AD AE Ү4AE
 B.  °B0 ±B1 І406 і456 ө4E9 µB5 B6 ·B7 ё451 2116 ғ493 BB ә4D9 Ң4A2 ң4A3 ү4AF

Кодировка Windows-1251 (чувашский вариант)

.1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
 8.  Ђ402 Ѓ403 201A ѓ453 201E 2026 2020 2021 20AC 2030 Љ409 2039 Ӑ4D0 Ӗ4D6 Ҫ4AA Ӳ4F2
 9.  ђ452 2018 2019 201C 201D 2022 2013 2014 2122 љ459 203A ӑ4D1 ӗ4D7 ҫ4AB ӳ4F3

Татарский вариант

Эта кодировка была официально принята в Татарстане в г.

.1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
 8.  Ә4D8 Ѓ403 201A ѓ453 201E 2026 2020 2021 20AC 2030 Ө4E8 2039 Ү4AE Җ496 Ң4A2 Һ4BA
 9.  ә4D9 2018 2019 201C 201D 2022 2013 2014 2122 ө4E9 203A ү4AF җ497 ң4A3 һ4BB

Неправильная кодировка результатов из базы данных MySQL

Если ваш сайт состоит из статической части (шаблон) и динамической, которая формируется из данных, получаемых из базы данных, то может возникнуть ситуация, когда часть сайта имеет правильную кодировку, а другая часть сайта имеет неправильную. В этом случае бесполезно менять настройки веб-сервера – поскольку всё равно часть страницы будет иметь неправильную кодировку.

Нужно начать с определения кодировки ваших таблиц. Можно посмотреть в phpMyAdmin:

Обратите внимание на столбец «Сравнение», запись «utf8_unicode_ci» означает, что используется кодировка UTF-8.

Можно подключиться к СУБД MySQL и проверить кодировку таблиц без phpMyAdmin. Для этого:

mysql -u root -p

Если вы забыли имя базы данных, то выполните команду:

SHOW DATABASES;

Предположим, я хочу посмотреть кодировку для таблиц в базе данных information_schema

USE information_schema;

Если вы забыли имя таблиц, выполните:

SHOW TABLES;

Далее выполните команду, в которой имя_таблицы замените на настоящее имя таблицы:

SHOW FULL COLUMNS FROM имя_таблицы;

Например:

SHOW FULL COLUMNS FROM GLOBAL_STATUS;

Вы увидите примерно следующее:

Смотрите столбец Collation. В моём случае там utf8_general_ci, это, как и utf8_unicode_ci, кодировка UTF-8. Кстати, если вы не знаете в чём разница между кодировками utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, а также какую кодировку выбрать для базы данных MySQL, то посмотрите эту статью.

Теперь, когда мы узнали кодировку (в моём случае это UTF-8), то при каждом подключении к СУБД MySQL нужно выполнять последовательно запросы:

SET NAMES UTF8
SET CHARACTER SET UTF8
SET character_set_client = UTF8
SET character_set_connection = UTF8
SET character_set_results = UTF8

В PHP это можно сделать примерно так:

$this->mysqli = new mysqli($server, $username, $password, $basename);
if ($this->mysqli->connect_error) {
            $this->errorHandler_c->logError(1, 'Connect Error (' . $this->mysqli->connect_errno . ') ' . $this->mysqli->connect_error, $_SERVER );
}
$this->mysqli->query("SET NAMES UTF8");
$this->mysqli->query("SET CHARACTER SET UTF8");
$this->mysqli->query("SET character_set_client = UTF8");
$this->mysqli->query("SET character_set_connection = UTF8");
$this->mysqli->query("SET character_set_results = UTF8");

Обратите внимание, что UTF8 вам нужно заменить на ту кодировку, которая используется для ваших таблиц.

Распространенные причины проблемы с кодировкойCommon causes of encoding issues

Проблемы с кодировкой возникают, если кодировка VS Code в целом или вашего файла скрипта не совпадает с кодировкой, ожидаемой в PowerShell.Encoding problems occur when the encoding of VS Code or your script file does not match the expected encoding of PowerShell. В PowerShell нет способа автоматически определить кодировку файла.There is no way for PowerShell to automatically determine the file encoding.

Проблемы с кодировкой более вероятны при использовании символов не из 7-разрядной кодировки ASCII.You’re more likely to have encoding problems when you’re using characters not in the 7-bit ASCII character set. Пример:For example:

  • Расширенные небуквенные символы, такие как длинное тире (), неразрывный пробел () или левая двойная кавычка ().Extended non-letter characters like em-dash (), non-breaking space () or left double quotation mark ()
  • Латинские символы с диакритикой (, )Accented latin characters (, )
  • Нелатинские символы, такие как кириллица (, )Non-latin characters like Cyrillic (, )
  • Символы иероглифического письма (, , ).CJK characters (, , )

Распространенные причины проблем с кодировкой:Common reasons for encoding issues are:

  • Параметры кодировок по умолчанию VS Code и PowerShell не были изменены.The encodings of VS Code and PowerShell have not been changed from their defaults. В версиях до PowerShell 5.1 (включительно) кодировка по умолчанию отличается от используемой в VS Code.For PowerShell 5.1 and below, the default encoding is different from VS Code’s.
  • Открыт другой редактор, и файл перезаписан в новой кодировке.Another editor has opened and overwritten the file in a new encoding. Это часто происходит с интегрированной средой сценариев.This often happens with the ISE.
  • Файл возвращается в систему управления версиями в кодировке, отличающейся от той, которая ожидается в VS Code или PowerShell.The file is checked into source control in an encoding that is different from what VS Code or PowerShell expects. Это может произойти, когда участники совместной работы используют редакторы с различными конфигурациями кодировок.This can happen when collaborators use editors with different encoding configurations.

Как определить наличие проблемы с кодировкойHow to tell when you have encoding issues

Часто ошибки кодирования в скриптах представляются как ошибки синтаксического анализа.Often encoding errors present themselves as parse errors in scripts. Если вы видите странные последовательности символов в скрипте, это может быть проблемой.If you find strange character sequences in your script, this can be the problem. В примере ниже тире () отображается в виде символов :In the example below, an en-dash () appears as the characters :

Эта проблема возникает, так как VS Code кодирует символ в UTF-8 как байты .This problem occurs because VS Code encodes the character in UTF-8 as the bytes . Если эти байты декодируются в кодировке Windows-1252, они интерпретируются как символы .When these bytes are decoded as Windows-1252, they are interpreted as the characters .

Некоторые странные последовательности символов, которые можно видеть:Some strange character sequences that you might see include:

  • вместо . instead of
  • вместо . instead of
  • вместо . instead of
  • вместо (неразрывный пробел); instead of (a non-breaking space)
  • вместо . instead of

Этот удобный справочник перечисляет распространенные шаблоны, которые указывают на проблему между кодировками UTF-8 и Windows-1252.This handy reference lists the common patterns that indicate a UTF-8/Windows-1252 encoding problem.

Решения проблемы с кодировкой в CMD. 2 Способ.

Теперь рассмотрим ещё одну ситуацию, когда могут возникнуть проблемы с кодировкой в CMD.

Допустим, ситуация требует сохранить результат выполнения той или иной команды в обычный «TXT» файл. В приделах этого поста возьмём для примера команду «HELP».

Задача : Сохранить справку CMD в файл «HelpCMD.txt. Для этого создайте Bat файл и запишите в него следующие строки.

После выполнения Bat файла в корне диска «C:» появится файл «HelpCMD.txt» и вместо справки получится вот что:

Естественно, такой вариант не кому не понравится и что бы сохранить справку в понятном для человека виде, допишите в Bat файл строку.

Теперь содержимое кода будет такое.

После выполнения «Батника» результат будет такой:

Вот так на много лучше, правда?

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

Дополнительно из комментариев то Garric

Автор очень хорошо описал принцип. ! Но это неудобно. Нужно бы добавить. Если автор добавит это в статью то это будет Good. Создаём файл .reg следующего содержания: —— Windows Registry Editor Version 5.00

«FileName»=»BATНастроенная кодировка.bat» —— Выполняем. —— Топаем в %SystemRoot%SHELLNEW Создаём там файл «BATНастроенная кодировка.bat» Открываем в Notepad++ Вводим любой текст. (нужно!) Сохраняемся. Удаляем текст. Меняем кодировку как сказано в статье. Сохраняемся. ———- Щёлкаем правой кнопкой мыши по Рабочему столу. Нажимаем «Создать» — «Пакетный файл Windows». Переименовываем. Открываем в Notepad++. Пишем батник. В дальнейшем при работе с файлом не нажимаем ничего кроме как просто «Сохранить». Никаких «Сохранить как».

Кодировки стандарта ASCII[править]

Определение:
ASCII — таблицы кодировок, в которых содержатся основные символы (английский алфавит, цифры, знаки препинания, символы национальных алфавитов(свои для каждого региона), служебные символы) и длина кода каждого символа бит.

бит:

ASCII7 — первая кодировка, пригодная для работы с текстом. Помимо маленьких букв английского алфавита и служебных символов, содержит большие буквы английского языка, цифры, знаки препинания и другие символы.

Кодировки стандарта ASCII ( бит):

  • ASCII — первая кодировка, в которой стало возможно использовать символы национальных алфавитов.
  • КОИ8-R — первая русская кодировка. Символы кириллицы расположены не в алфавитном порядке. Их разместили в верхнюю половину таблицы так, чтобы позиции кириллических символов соответствовали их фонетическим аналогам в английском алфавите. Это значит, что даже при потере старшего бита каждого символа, например, при проходе через устаревший семибитный модем, текст остается «читаемым».
  • CP866 — русская кодировка, использовавшаяся на компьютерах IBM в системе DOS.
  • Windows-1251 — русская кодировка, использовавшаяся в русскоязычных версиях операционной системы Windows в начале 90-х годов. Кириллические символы идут в алфавитном порядке. Содержит все символы, встречающиеся в типографике обычного текста (кроме знака ударения).

Структурные свойства таблицыправить

  • Цифры 0-9 представляются своими двоичными значениями (например, ), перед которыми стоит . Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева к каждому двоично-десятичному полубайту.
  • Буквы A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит (для букв верхнего регистра) или (для букв нижнего регистра).
  1 2 3 4 5 6 7 8 9 A B C D E F
NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2    ! » # $  % & ( ) * + , .
3 1 2 3 4 5 6 7 8 9  ; < = >  ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z \ ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

Неправильная кодировка HTML страниц

Создадим тестовый файлик:

sudo gedit /var/www/html/encoding.html

Скопируем в него следующий HTML код, в котором отсутствует указание кодировки и посмотрим, какие проблемы могут с ним возникнуть и как их решить:

<html>
  <head>
    <title>Проверка кодировки</title>
   </head>
  <body>
    <h1>Тестовый файл для проверки кодировки</h1>
  </body>
</html>

Откроем этот файл в браузере http://localhost/encoding.html

Как можно видеть, кодировка браузером определена неправильно:

Имеется несколько способов исправить эту ситуацию. Начнём с самого простого – явно указать кодировку для веб-страницы. Это делается метатегом, который должен быть расположен внутри тэга head:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Добавим эту строку к нашему тестовому файлику, чтобы получилось так:

<html>
  <head>
    <title>Проверка кодировки</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   </head>
  <body>
    <h1>Тестовый файл для проверки кодировки</h1>
  </body>
</html>

Как мы можем убедиться на следующем скриншоте, проблема решена:

Если кодировка вашего файла отличается от UTF-8, то вместо неё поставьте windows-1251 или ту, которая соответствует кодировке веб-страницы. Чтобы научиться определять кодировку файлов, посмотрите эту инструкцию.

Это был самый простой способ исправления проблемы с кодировкой – без изменения настроек сервера.

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

Если файлы .htaccess включены настройками Apache, то эти файлы можно использовать чтобы указывать кодировку отправляемых веб-сервером страниц. Чтобы включить поддержку файлов .htaccess в конфигурационном файле Apache ( /etc/apache2/apache2.conf ) найдите группу строк

<Directory /var/www/>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>

И в ней замените

AllowOverride None

на

AllowOverride All

После этого сервер нужно перезапустить.

sudo systemctl restart apache2.service

Файл .htaccess должен быть размещён в той же директории, что и сайт. Мой сайт размещён в корневой директории веб-сервера. Если у вас также, то теперь в папке /var/www/html/ создайте файл .htaccess и добавьте в него директиву AddDefaultCharset после которой укажите желаемую кодировку. Примеры

AddDefaultCharset UTF-8

ИЛИ

AddDefaultCharset windows-1251

Можно указать кодировку, которая будет применена только к файлам определённого формата:

AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

Набор файлов может быть любым, например:

AddCharset utf-8 .html .css .php .txt .js

Следующий вариант является альтернативным и также позволяет устанавливать кодировку для файлов определённого типа, для него нужно, чтобы был включён mod_headers:

<Files ~ "\.html?$">  
     Header set Content-Type "text/html; charset=utf-8"
</Files>

Ещё один вариант, который также можно использовать в файле .htaccess для установки кодировки UTF-8:

IndexOptions +Charset=utf-8

Если сайт на PHP, то дополнительно может понадобиться продублировать кодировку с php_value default_charset:

AddDefaultCharset windows-1251
php_value default_charset "cp1251"

Можно вместо создания файла .htaccess установить кодировку в конфигурационном файле веб-сервера. Для Apache CentOS/Fedora это файл httpd.conf, а на Debian/Ubuntu это файл apache2.conf. Добавьте следующую строку для установки кодировки и перезапустите веб-сервер, чтобы изменения вступили в силу:

AddDefaultCharset UTF-8

Таблица кодов символов Windows-1251

Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Данная кодировка пользуется довольно большой популярностью в восточно-европейских странах.

Windows-1251 выгодно отличается от других 8-битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в традиционной русской типографике для обычного текста (отсутствует только знак ударения). Кириллические символы идут в алфавитном порядке.

Windows-1251 также содержит все символы для близких к русскому языку языков: белорусского, украинского, сербского, македонского и болгарского.

На практике этого оказалось достаточно, чтобы кодировка Windows-1251 закрепилась в интернете вплоть до распространения UTF-8.

000 00 NOP 128 80 Ђ
001 01 SOH 129 81 Ѓ
002 02 STX 130 82
003 03 ETX 131 83 ѓ
004 04 EOT 132 84
005 05 ENQ 133 85
006 06 ACK 134 86
007 07 BEL 135 87
008 08 BS 136 88
009 09 TAB 137 89
010 0A LF 138 8A Љ
011 0B VT 139 8B
012 0C FF 140 8C Њ
013 0D CR 141 8D Ќ
014 0E SO 142 8E Ћ
015 0F SI 143 8F Џ
016 10 DLE 144 90 ђ
017 11 DC1 145 91
018 12 DC2 146 92
019 13 DC3 147 93
020 14 DC4 148 94
021 15 NAK 149 95
022 16 SYN 150 96
023 17 ETB 151 97
024 18 CAN 152 98
025 19 EM 153 99
026 1A SUB 154 9A љ
027 1B ESC 155 9B
028 1C FS 156 9C њ
029 1D GS 157 9D ќ
030 1E RS 158 9E ћ
031 1F US 159 9F џ
032 20 SP 160 A0
033 21 ! 161 A1 Ў
034 22 162 A2 ў
035 23 # 163 A3 Ћ
036 24 $ 164 A4 ¤
037 25 % 165 A5 Ґ
038 26 & 166 A6 ¦
039 27 167 A7 §
040 28 ( 168 A8 Ё
041 29 ) 169 A9
042 2A * 170 AA Є
043 2B + 171 AB
044 2C , 172 AC ¬
045 2D 173 AD ­
046 2E . 174 AE
047 2F 175 AF Ї
048 30 176 B0 °
049 31 1 177 B1 ±
050 32 2 178 B2 І
051 33 3 179 B3 і
052 34 4 180 B4 ґ
053 35 5 181 B5 µ
054 36 6 182 B6
055 37 7 183 B7 ·
056 38 8 184 B8 ё
057 39 9 185 B9
058 3A 186 BA є
059 3B ; 187 BB
060 3C 190 BE ѕ
063 3F ? 191 BF ї
064 40 @ 192 C0 А
065 41 A 193 C1 Б
066 42 B 194 C2 В
067 43 C 195 C3 Г
068 44 D 196 C4 Д
069 45 E 197 C5 Е
070 46 F 198 C6 Ж
071 47 G 199 C7 З
072 48 H 200 C8 И
073 49 I 201 C9 Й
074 4A J 202 CA К
075 4B K 203 CB Л
076 4C L 204 CC М
077 4D M 205 CD Н
078 4E N 206 CE О
079 4F O 207 CF П
080 50 P 208 D0 Р
081 51 Q 209 D1 С
082 52 R 210 D2 Т
083 53 S 211 D3 У
084 54 T 212 D4 Ф
085 55 U 213 D5 Х
086 56 V 214 D6 Ц
087 57 W 215 D7 Ч
088 58 X 216 D8 Ш
089 59 Y 217 D9 Щ
090 5A Z 218 DA Ъ
091 5B 219 DB Ы
092 5C 220 DC Ь
093 5D 221 DD Э
094 5E 222 DE Ю
095 5F _ 223 DF Я
096 60 ` 224 E0 а
097 61 a 225 E1 б
098 62 b 226 E2 в
099 63 c 227 E3 г
100 64 d 228 E4 д
101 65 e 229 E5 е
102 66 f 230 E6 ж
103 67 g 231 E7 з
104 68 h 232 E8 и
105 69 i 233 E9 й
106 6A j 234 EA к
107 6B k 235 EB л
108 6C l 236 EC м
109 6D m 237 ED н
110 6E n 238 EE о
111 6F o 239 EF п
112 70 p 240 F0 р
113 71 q 241 F1 с
114 72 r 242 F2 т
115 73 s 243 F3 у
116 74 t 244 F4 ф
117 75 u 245 F5 х
118 76 v 246 F6 ц
119 77 w 247 F7 ч
120 78 x 248 F8 ш
121 79 y 249 F9 щ
122 7A z 250 FA ъ
123 7B { 251 FB ы
124 7C | 252 FC ь
125 7D } 253 FD э
126 7E ~ 254 FE ю
127 7F DEL 255 FF я

Описание специальных (управляющих) символов

Первоначально управляющие символы таблицы ASCII (диапазон 00-31, плюс 127) были разработаны для того, чтобы управлять устройствами аппаратных средств, таких как телетайп, ввод данных на перфоленту и др.Управляющие символы (кроме горизонтальной табуляции, перевода строки и возврата каретки) не используются в HTML-документах.

КодОписание

NUL, 00 NULL, пустой SOH, 01 Start Of Heading, начало заголовка STX, 02 Start of TeXt, начало текста ETX, 03 End of TeXt, конец текста EOT, 04 End of Transmission, конец передачи ENQ, 05 Enquire. Прошу подтверждения ACK, 06 Acknowledgement. Подтверждаю BEL, 07 Bell, звонок BS, 08 Backspace, возврат на один символ назад TAB, 09 Tab, горизонтальная табуляция LF, 0A Line Feed, перевод строкиСейчас в большинстве языков программирования обозначается как

VT, 0B Vertical Tab, вертикальная табуляция FF, 0C Form Feed, прогон страницы, новая страница CR, 0D Carriage Return, возврат кареткиСейчас в большинстве языков программирования обозначается как

SO, 0E Shift Out, изменить цвет красящей ленты в печатающем устройстве SI, 0F Shift In, вернуть цвет красящей ленты в печатающем устройстве обратно DLE, 10 Data Link Escape, переключение канала на передачу данных DC1, 11 DC2, 12DC3, 13DC4, 14 Device Control, символы управления устройствами NAK, 15 Negative Acknowledgment, не подтверждаю SYN, 16 Synchronization. Символ синхронизации ETB, 17 End of Text Block, конец текстового блока CAN, 18 Cancel, отмена переданного ранее EM, 19 End of Medium, конец носителя данных SUB, 1A Substitute, подставить. Ставится на месте символа, значение которого было потеряно или испорчено при передаче ESC, 1B Escape Управляющая последовательность FS, 1C File Separator, разделитель файлов GS, 1D Group Separator, разделитель групп RS, 1E Record Separator, разделитель записей US, 1F Unit Separator, разделитель юнитов DEL, 7F Delete, стереть последний символ.

Страхи перед UTF-8

  • Не поддержка старых (рабочих) проектов кодировки UTF-8. (Давайте еще ДОС вспомним). Ориентироваться на старые продукты, считаю полностью утопично.
  • Один символ кириллицы в cp1251 занимает 1 байт, а в utf-8 — 2 байта. Как ни странно данный факт сильно отталкивает, и отталкивал меня долгое время от начало использования данной кодировки. Как показала практика в среднем UTF страница на русском языке больше, чем стандартная cp1251 всего на 20-30 процентов. Если текст на английском, то страница одинакового размера. Чаще всего — основной вес страницы составляет HTML код, JavaScript, Flash, картинки, CSS и так далее. Тем, кто заботится о «весе», следовало бы в первую очередь выкинуть из кода подстановки для тех символов, которым они не нужны, например, «- » для длинного тире или для неразрывного пробела (ой, как часто я вижу это в страницах новичков). Видим, что вместо 1 знака длинного тире мы пишем 6, вместо 1 знака неразрывного пробела мы пишем 5 знаков. И где же экономия? Действительно, иногда доходит до маразма — некто упирается: «Не буду делать страницы в UTF-8, потому что они от этого увеличиваются» — а сам при этом ваяет код с жуткими атрибутами и подстановками, который без них мог бы быть в пять раз короче. Также у 90 процентов WEB программистов HTML страницы просто не оптимизированы, даже пробелы не убраны из кода. А пробел это тоже байтик!
  • отображения крокозябликов в любимых стареньких программах, таких как Far. Не знаю почему, но far так не сумел приучить читать корректно данную кодировку даже в последнем beta релизе Far 2.0.

Спасшая статья:

Приложение cmd.exe – это командная строка или программная оболочка с текстовым интерфейсом (во загнул ).

Запустить командную строку можно следующим способом: Пуск → Выполнить → вводим в поле команду – cmd и жмем ОК. В итоге откроется рабочее окно программы – c:WINDOWSsystem32cmd.exe. ( рис.1)

Если Вы занялись проблемой кодировки шрифтов в cmd.exe , то как запускать командную строку наверняка уже знаете

Перейдем собственно к проблеме: иногда вместо русских букв при выполнении команд выходит набор непонятных символов ( рис.2).

Первым делом нужно зайти в свойства окна – правой кнопкой щелкнуть по верхней части окна → Свойства → выйдет окно рис.3, здесь в поле Шрифтвыбираем Luc >ОК.

Теперь Вы получили нормальный текст на русском языке. Так же можно поменять текущую кодировку шрифта, для этого используется команда chcp. Набираем эту команду и жмем Enter, в результате получим текущую кодировку для командной строки – рис.4.

Для изменения кодировки так же применим chcp в следующем формате:

Где – это цифровой параметр нужного шрифта, например,

1251 – Windows (кириллица);

Выбирайте на любой вкус. Т.о. что бы изменить кодировку на UTF-8 нужно выполнить команду chcp 65001.

almixРазработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Как корректно отобразить Русский текст в CMD. Проблемы с кодировкой могут возникнуть, например, при выполнении Bat файла, когда нужно вывести в консоль русский текст и при других обстоятельствах, о которых речь пойдёт далее.

Рассмотрим пример: когда нужно вывести в консоль Русский текст, скажем «Примет мир». Для этого создадим Bat файл с именем «1.bat». Используйте для этого обычный Блокнот Windows (Notepad.exe) Запишем в него следующие строки!

Для тех, кто не понял или не в курсе, строчки «echo.» я добавил специально, что бы были отступы, от строки «Примет мир»

Теперь запускаем файл 1.bat и результат будет такого вида.

Как видим проблема с кодировкой в cmd на лицо. И произошло это по следующей причине.

Стандартный блокнот Windows сохранил Bat файл в кодировке «1251» а консоль вывела его в кодировки «866». Вот от сюда все проблемы!

Зачем нужна кодировка

Кодировка (Charset) — способ отображения кода на экране, соответствие набора символов набору числовых значений. О ней сообщает строка Content-Type и сервер в header запросе.

Студентка списывала реферат с формулами, а на сайте слетела кодировка. Реальная история

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

Кодировка влияет на SEO?

Разберемся, как кодировка на сайте влияет на индексацию в Яндекс и Google.

Яндекс четко заявляет:

Позиция Google такая же. Поисковики не рассматривают Charset как фактор ранжирования или сигнал для индексирования, тем не менее, она косвенно влияет на трафик и позиции.

Если кодировка сервера не совпадает с той, что указана на сайте, пользователи увидят нечитабельные символы вместо контента. На таком сайте сложно что-либо понять, так что скорее всего пользователи сбегут, а на сайте будут расти отказы.

Пример страницы со слетевшей кодировкой

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector