From 77ac4e36536fc07e94088cd2ffd2b2959afcc989 Mon Sep 17 00:00:00 2001 From: Oleg Grigoriev Date: Mon, 1 Sep 2014 14:32:24 +0400 Subject: [PATCH] Up 2014.09.01 --- loc/ru/sections/control-character.axyml | 46 +++ loc/ru/sections/control-characters.txt | 6 - loc/ru/symbols-desc/0000.axyml | 37 ++ loc/ru/symbols-desc/0001.axyml | 6 + loc/ru/symbols-desc/0002.axyml | 6 + loc/ru/symbols-desc/0003.axyml | 7 + loc/ru/symbols-desc/0004.axyml | 7 + loc/ru/symbols-desc/0005.axyml | 6 + loc/ru/symbols-desc/0007.axyml | 18 + loc/ru/symbols-desc/0008.axyml | 15 + loc/ru/symbols-desc/0009.axyml | 43 +++ loc/ru/symbols/0000.txt | 40 +-- loc/ru/symbols/plane1/10300.txt | 60 ++-- loc/ru/symbols/plane1/10800.txt | 110 +++--- loc/ru/symbols/plane1/11000.txt | 420 +++++++++++------------ loc/ru/symbols/plane1/1B000.txt | 4 +- loc/ru/symbols/plane1/1D300.txt | 36 +- loc/ru/symbols/plane1/1E800.txt | 426 ++++++++++++------------ loc/ru/symbols/plane1/1F400.txt | 2 +- loc/ru/symbols/plane1/1F700.txt | 38 +-- 20 files changed, 759 insertions(+), 574 deletions(-) create mode 100644 loc/ru/sections/control-character.axyml delete mode 100644 loc/ru/sections/control-characters.txt create mode 100644 loc/ru/symbols-desc/0000.axyml create mode 100644 loc/ru/symbols-desc/0001.axyml create mode 100644 loc/ru/symbols-desc/0002.axyml create mode 100644 loc/ru/symbols-desc/0003.axyml create mode 100644 loc/ru/symbols-desc/0004.axyml create mode 100644 loc/ru/symbols-desc/0005.axyml create mode 100644 loc/ru/symbols-desc/0007.axyml create mode 100644 loc/ru/symbols-desc/0008.axyml create mode 100644 loc/ru/symbols-desc/0009.axyml diff --git a/loc/ru/sections/control-character.axyml b/loc/ru/sections/control-character.axyml new file mode 100644 index 00000000..9eb4f877 --- /dev/null +++ b/loc/ru/sections/control-character.axyml @@ -0,0 +1,46 @@ +Управляющие символы не имеют никакого графического представления. +Они используются для управления потоком данных. + +В рамках Unicode имеет смысл только небольшое количество из этих символов. +Например [U:000A #] или [U:0009 #]. + +## Совместимость + +Большинство же символов этого блока включены в стандарт только для поддержания совместимости с другими кодировками (тем более, что эти символы - часть ASCII). +Это символы управления телетайпами, перфокартами, различными терминалами. +Например, при получении определённого символа устройство должно что-то сделать: сбросить страницу, закончить обработку текущих данных, сделать запрос. +Есть даже символ [U:0007], заставляющий устройство пищать через встроенных динамик. + +Многие устройства для которых они предназначались уже давно устарели. +Либо стали использовать для тех же целей различные языки управления устройствами (Postscript и другие). +Там же, где эти символы ещё используются, не используется Юникод. +Также многие управляющие символы используются в некоторых программах не так, как предполагалось изначально. + +Некоторые символы, которые имели отношение к выводу текста, также не работают на современных системах. +Например [U:0008 backspace] затирал предыдущий символ, но сейчас уже не имеет былой силы: + +[[[js +var str = "ab\bc"; // выведет "ab c", а не "ac", как по старой логике +]]] + +## Использование + +В связи с широким использованием управляющих символов, в языках программирования для большинства из них предусмотрены escape-последовательности: + +[[[php +// \n - перенос строки (U+000A), \t - табуляция (U+0009) +echo "One line\nTwo line\tThree line"; +]]] + +Также многие терминалы позволяли вводить такие символы вручную, обычно с помощью сочетания с клавишей Ctrl. +Например, Ctrl-C посылает символ [0003 #] прерывающий текущий процесс. + +## Другие блоки + +Кроме базового блока, есть ещё управляющие символы ISO 8859, расположенные в начале [SECTION:latin-1-supplement расширенной латиницы]. +Они также в большинстве своём устаревшие. + +С другой стороны есть символы, имеющие управляющее значение именно в рамках стандарта Unicode. +Например, [U:034F *] или [U:200E *]. + + diff --git a/loc/ru/sections/control-characters.txt b/loc/ru/sections/control-characters.txt deleted file mode 100644 index 6575cb22..00000000 --- a/loc/ru/sections/control-characters.txt +++ /dev/null @@ -1,6 +0,0 @@ -Управляющие символы — элементы, которым не приписано графическое представление, -но которые используются для управления устройствами, организации передачи данных и других целей. -Сейчас для этих целей применяются форматы файлов, языки управления устройствами (такие как Postscript) -и сетевые протоколы. - -Поэтому многие управляющие символы сейчас или не используются вообще, или используются не по назначению. \ No newline at end of file diff --git a/loc/ru/symbols-desc/0000.axyml b/loc/ru/symbols-desc/0000.axyml new file mode 100644 index 00000000..05975829 --- /dev/null +++ b/loc/ru/symbols-desc/0000.axyml @@ -0,0 +1,37 @@ +Во многих языках программирования нулевой символ используется для обозначения окончания строки. + +Это так называемые "Си-строки" (название происходит от языка Си, где используются такие строки). +Другие названия: null-терминированная строка или ASCIZ-строка. + +При таком подходе, код работающий со строкой изначально не знает её длинны и обрабатывает символы последовательно, пока не встретит нулевой. + +[[[code:c +/* Вывод строки */ +i = 0; // начать с начала строки +while (s[i] != 0) { // работать, пока текущий символ не \0 + echo s[i]; // вывести очередной символ + i++; // перейти к следующему +} +]]] + +Из минусов такого подхода: + +[*] Заранее неизвестна длина строки +[*] Строка не может содержать непосредственно символ \0 +[*] Если забыть поставить в конце \0 или случайно удалить его, код пойдёт работать дальше с непредвиденными последствиями. + +В случае использования многобайтовых кодировок фиксированной ширины, нулевой символ также должен занимать положенное количество байт. +Например, в UCS-2: два нулевых байта. + +Альтернативный подход при организации строк - хранить длину строки в отдельной переменной. + +При выводе Unicode-строки нулевой символ не имеет никакого представления и никого влияния на поток вывода. +Некоторые программы и устройства могут отображать его в виде пробела, но это не совсем корректно. + +Однако, полное игнорирование данного символа иногда может приводить к неприятным последствиями. +Например, некоторые старые браузеры расценивали строку типа [code <\0script>] как [code