Использование специальных символов в Юникоде
Юникод содержит несколько специальных символов и символов, которые имеют необычное значение в текстовых строках. Чтобы избежать непредвиденных проблем с этими символами, используйте правила, приведенные в следующих разделах в приложениях:
- Использование кодов элементов управления ASCII 0x000D и 0x000A
- Использование меток порядка байтов
- Использование escape-последовательностей и управляющих символов
- Использование разделителей строк и абзацей
- Использование символов без знака и диакритических знаков
- Использование строк, завершаемых значением NULL
Что делают символы unicode из категории «Other, control»?
Зачем созданы символы на подобии U+007F(DELETE)? Такой DELETE ничего не удаляет, я пробовал. И там ещё масса таких символов, вот список: http://www.fileformat.info/info/unicode/category/Cc/list.htm Так зачем же такие символы нужны? И как их применять?
Отслеживать
задан 1 июл 2017 в 9:27
user236939 user236939
А как вы это пробовали ? В редакторе под windows он может ничего и не удаляет, а в консоли unix еще как удаляет. так же и остальные управляющие символы, они созданы для управления терминалом. Часть ОС, которым они нужны их понимают, другая часть ОС игнорируют
1 июл 2017 в 10:18
@Mike я пробовал в редакторах linux ubuntu, но не в консоле.
– user236939
1 июл 2017 в 10:43
Вы в редакторе введите этот символ а потом выведите файл на консоль с помощью cat. Только убедитесь в шестнадцетиричном редакторе, что в файле действительно 0x7F. При вводе с клавиатуры эти символы могут чем нибудь подменяться
1 июл 2017 в 10:44
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Зачем созданы символы на подобии U+007F(DELETE)?
U+007F (DEL, ЗАБОЙ , ЗБ ) это противоположность U+0000 (NUL, ПУСТО ) с теми же корнями времён, когда биты физически дырками на бумаге обозначались. Определение символа ЗАБОЙ из ГОСТ 27465-87:
Символ, предназначенный для уничтожения ошибочных и ненужных символов на носителе (перфоленте).
/\/\/\/\/| | . | ␀ | . | ␀ | o o . oo| S | ooo .o | t | oo . o| a | oo . oo| c | oooo.ooo| ␡ | oo o. oo| k | o . | ␠ | o o.ooo| O | ooo .oo | v | oo .o o| e | ooo . o | r | oo .oo | f | oo o.o | l | oo o.ooo| o | ooo .ooo| w | o. o | New Line | . | ␀ | . | ␀ |/\/\/\/\/
В (искусственном) примере выше, лента содержит данные в ASCII кодировке ( «Stack Overflow\n» ). Начало и конец ленты не содержат дырок и соответствуют символу ПУСТО и наоборот когда все дырки пробиты это соответствует символу ЗАБОЙ :
0000_000 ␀ 1100_001 a 1100_011 c 1111_111 ␡
То есть, намерение в том, что если введён не тот символ, то его можно стереть забив поверх символом, состоящим из одних единиц, то есть символом ЗАБОЙ . Также как и NUL, DEL иначе игнорируется (поэтому суммарный эффект в том, что забитый поверх символ стирается).
>>> print('\u0435' + chr(0b1111_111) + '\u0308') ё
На практике, на моей машине stty в терминале показывает, что ЗАБОЙ используется в качестве erase управляющего символа (стирает предыдущий символ). Нажатие Ctrl-V Backspace в консоли выводит ^? ( ЗАБОЙ в caret notation).
Что делают символы unicode из категории “Other, control”?
Включая U+0000 и U+007F, в Юникоде 65 управляющих символа (code points: U+0000..U+001F и U+007F..U+009F ), существующих для совместимости с C0 и C1 управляющими кодами. Unicode стандарт (23.1 Control Codes) не изменяет смысл этих кодов, который в общем случае определяется приложениями или в отсутствии другой семантики ISO/IEC 6429:1992 стандартом. См. ECMA-48 (редакция ISO/IEC 6429)
Семантика, определяемая стандартом (которая может не использоваться на практике, если конкретное приложение определяет своё значение), слабо поменялась с ANSI_X3.4-1968. Из RFC 20 (копия определения из ASCII):
DEL (Delete): This character is used primarily to «erase» or «obliterate» erroneous or unwanted characters in perforated tape.
Если есть интерес к происхождению ascii кодов, можно почитать неформальную историю The Evolution of Character Codes, 1874-1968 (для плавного введения в соосную тему подойдёт книга Чарльза Петцольда: «Код. Тайный язык информатики»), а также посмотреть на дальнейшее развитие стандартов для управляющих символов до их включения в Unicode:
Поддержка Юникода
Юникод — это спецификация для поддержки всех наборов символов, включая те, которые не могут быть представлены в одном байте. Если вы программуете для международного рынка, рекомендуется использовать Юникод или многобайтовый набор символов (МБ CS). Или кодируйте программу, чтобы ее можно было создать, изменив переключатель.
Расширенный символ — это двухбайтовый многоязыковой код символа. Десятки тысяч символов, составляющих почти все символы, используемые в современных вычислениях во всем мире, включая технические символы и специальные символы публикации, можно представить в соответствии со спецификацией Юникода как один широкий символ, закодированный с помощью UTF-16. Символы, которые не могут быть представлены только в одном широком символе, можно представить в паре Юникода с помощью функции суррогатной пары Юникода. Так как почти каждый символ в общем использовании представлен в UTF-16 в одном 16-разрядном широком символе, используя широкие символы, упрощает программирование с помощью международных наборов символов. Широкие символы, закодированные с помощью UTF-16LE (для маленького эндиана) — это собственный формат символов для Windows.
Строка расширенных символов представляется как массив wchar_t[] , и на нее указывает указатель wchar_t* . Любой символ ASCII может быть представлен как расширенный символ путем добавления к нему префикса «L». Например, «L’\0′» является 16-битным расширенным символом для значения NULL. Подобным образом все строковые литералы, составленные из символов ASCII, могут быть представлены как строковые литералы из расширенных символов путем добавления к литералу ASCII префикса «L» (L»Hello»).
Как правило, расширенные символы занимают больше памяти, чем многобайтовые символы, однако они обрабатываются быстрее. Кроме того, в многобайтовой кодировке может представляться только один языковой стандарт, а все наборы символов в мире представлены одновременно представлением Юникода.
Поддержка Юникода обеспечивается для всех компонентов платформы MFC. MFC обеспечивает поддержку Юникода с помощью переносимых макросов, как показано в следующей таблице.
Типы переносимых данных в MFC
Непереносимый тип данных | Макрос, которым он заменяется |
---|---|
char , wchar_t | _TCHAR |
char* , LPSTR (тип данных Win32), LPWSTR | LPTSTR |
const char* , LPCSTR (тип данных Win32), LPCWSTR | LPCTSTR |
Класс CString используется _TCHAR в качестве основы и предоставляет конструкторы и операторы для простых преобразований. Большинство операций со строками Юникода может быть написано с помощью средств, которые используются для обработки кодировки Windows ANSI. Единственным отличием является то, что основной единицей операции является шестнадцатибитный символ, а не восьмибитный. В отличие от многобайтовых кодировок нет необходимости (и не следует) обрабатывать символы Юникода как два отдельных байта. Однако необходимо иметь дело с возможностью одного символа, представленного суррогатной парой широких символов. Как правило, не писать код, предполагающий длину строки, совпадает с числом символов, будь то узкие или широкие, содержащиеся в нем.
Что вы хотите сделать?
- Использование поддержки юникода mFC и многобайтового набора символов (МБ CS)
- Включение Юникода в моей программе
- Включение Юникода и МБ CS в моей программе
- Создание интернационализированной программы с помощью Юникода
- Узнайте о преимуществах Юникода
- Используйте wmain, чтобы я смог передать аргументы с широкими символами в мою программу
- См. сводку по программированию Юникода
- Сведения о сопоставлениях универсального текста для переносимости байтовой ширины
Символы Юникода (Unicode) для поисковых систем и красивой выдачи
Некоторые специальные символы можно отобразить в теге Title, который будет виден в сниппете, при выдаче поисковых результатов. Это привлечёт внимание ваших покупателей. Cимволы Unicode очень полезны для оформления текстов, дизайна и нужд SEO. Вы можете сейчас протестировать специальный символы для их отображения в теге Title на поисковой выдаче. Но помните, разные поисковые системы, могут по разному отображать спец, символы или не отображать вовсе.
СИМВОЛЫ ВАЛЮТ, РУБЛЬ, ИНЬ И ЯН, СЕРП И МОЛОТ
® ✉ § © ☯ ☭ ₴ € £ ¢ российский рубль: U+20BD (в Юникоде) и ₽ (в HTML-коде). Национальная валюта Украины — гривны, код — U+20B4, в HTML-коде ₴ или ₴
ЧИСЛА И НУМЕРАЦИЯ ОТ 1 ДО 20 И ОТ A ДО Z В ЮНИКОД
ПАЛОЧКИ, ЧЁРТОЧКИ И КРЕСТИКИ В UNICODE
СИМВОЛЫ КВАДРАТИКОВ, СТРЕЛОЧЕК, КОЛБОЧЕК
СПЕЦИАЛЬНЫЕ СИМВОЛЫ ВИДА «СОЛНЫШКО», «ЗВЁЗДОЧКА» И Т. П.
ГРЕЧЕСКИЙ АЛФАВИТ И ПРОЧИЕ БУКВЫ
ᴀ ᴁ ᴂ ᴃ ᴄ ᴅ ᴆ ᴇ ᴈ ᴉ ᴊ ᴋ ᴌ ᴍ ᴎ ᴏ ᴐ ᴑ ᴒ ᴓ ᴔ ᴕ ᴖ ᴗ ᴘ ᴙ ᴚ ᴛ ᴜ ᴝ ᴞ ᴟ ᴠ ᴡ ᴢ ᴣ ᴤ ᴥ ᴦ ᴧ ᴨ ᴩ ᴪ ᴫ ᴬ ᴭ ᴮ ᴯ ᴰ ᴱ ᴲ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴻ ᴼ ᴽ ᴾ ᴿ ᵀ ᵁ ᵂ ᵃ ᵄ ᵅ ᵆ ᵇ ᵈ ᵉ ᵊ ᵋ ᵌ ᵍ ᵎ ᵏ ᵐ ᵑ ᵒ ᵓ ᵔ ᵕ ᵖ ᵗ ᵘ ᵙ ᵚ ᵛ ᵜ ᵝ ᵞ ᵟ ᵠ ᵡ ᵢ ᵣ ᵤ ᵥ ᵦ ᵧ ᵨ ᵩ ᵪ ᵫ ᵬ ᵭ ᵮ ᵯ ᵰ ᵱ ᵲ ᵳ ᵴ ᵵ ᵶ ᵷ ᵸ ᵹ ᵺ ᵻ ᵼ ᵽ ᵾ ᵿ ᶀ ᶁ ᶂ ᶃ ᶄ ᶅ ᶆ ᶇ ᶈ ᶉ ᶊ ᶋ ᶌ ᶍ ᶎ ᶏ ᶐ ᶑ ᶒ ᶓ ᶔ ᶕ ᶖ ᶗ ᶘ ᶙ ᶚ ᶛ ᶜ ᶝ ᶞ ᶟ ᶠ ᶡ ᶢ ᶣ ᶤ ᶥ ᶦ ᶧ ᶨ ᶩ ᶪ ᶫ ᶬ ᶭ ᶮ ᶯ ᶰ ᶱ ᶲ ᶳ ᶴ ᶵ ᶶ ᶷ ᶸ ᶹ ᶺ ᶻ ᶼ ᶽ ᶾ ᶿ ῲ ῳ ῴ ῶ ῷ Ὸ Ό Ὼ Ώ ῼ ⍳ ⍴ ⍵ ⍶ ⍷ ⍸ ⍹ ⍺