Что значат характеры типа “\\u0 …”

Эти характеры, которые Вы значите:

"\u0001"
"\u0013"
"\u0004"
"\u0003"
"\u0018"
"\u001A"
"\u0016"
"\u0002"

Когда я нажимаю на клавишу ctrl, я солил себя я использую IDE qt и программы, чтобы показывать клавиши. Спасибо.

1
задан 12.10.2016, 07:10
4 ответа

В C ++ \u ó \U они показывают символы unicode.

\u для 16 бит. \U для 32 бит.

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


  • Как пример представление буквы

    **ñ**

    использованная на испанском языке, он был бы:

'\u00F1' или '\U000000F1'

  • Другой пример символ Евро:

introducir la descripción de la imagen aquí

Ваше представление было бы:

он был бы:

'\u20AC' или '\U000020AC'


Пример использования:

cout << "Deseo imprimir estos caracteres: \u00F1 y \u20AC" << endl;

Выход:

Deseo imprimir estos caracteres: ñ y €

Здесь имеется таблица, в которой представляются все символы:

http://unicode-table.com/en/#control-character

5
ответ дан 24.11.2019, 13:08
  • 1
    если я хочу изменить unicode в representaci и # 243; n в char, как то, чтобы быть и # 237; в es только это и уже быть и # 237; в лучший ответ извини и спасибо. –  Sergio Ramos 12.10.2016, 00:46
  • 2
    Например char b = и #39; \u20AC и # 39;; (16 бит). –  Jorgesys♦ 12.10.2016, 00:50
  • 3
    я должен помещать ему всегда UTF-8 (hex) а дай следующую ошибку: es.stackoverflow.com/questions/27163/… –  Sergio Ramos 12.10.2016, 01:12
  • 4
    стой решила тысяча спасибо эту совершенно это! –  Sergio Ramos 12.10.2016, 01:40
  • 5
    Превосходный Омар! добавь твой ответ в es.stackoverflow.com/questions/27163/… ТИПОВ ПРИВЕТА! –  Jorgesys♦ 12.10.2016, 01:41

Это символы unicode очень полезные, чтобы представлять специальные символы, я оставляю тебе список тех, которые помогли достаточно мне

Á \u00C1

á \u00E1

É \u00C9

é \u00E9

Í \u00CD

í \u00ED

Р \u00D3

ó \u00F3

Щ \u00DA

ú \u00FA

Ü \u00DC

ü \u00FC

? \u00D1

ñ \u00F1

& \u0022

<\u003C

í \u00ED

” \u0022

‘\u0027

© \u00A9

® \u00AE

€ \u20AC

¼ \u00BC

½ \u00BD

¾ \u00BE

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

1
ответ дан 24.11.2019, 13:08

В одном из твоих комментариев ты поместил "если я хочу изменить unicode в представление в char [...]". Я думаю, что этот вопрос отражает, что тебе не ясно, как оно функционирует кодирования характеров, и Ваше различие, когда вышеупомянутые характеры появляются в окне или в конечной остановке. Так что я это объясняю to' с целью осветлять любое другое сомнение, которое выходило бы из-за дорожки.

АМЕРИКАНСКИЙ СТАНДАРТНЫЙ КОД ОБМЕНА ИНФОРМАЦИЕЙ

Давайте начинать с Американского стандартного кода обмена информацией. Американский стандартный код обмена информацией - рожденное кодирование, чтобы стандартизировать "характеры", которые использовались в телетайпе (похожие на пишущие машинки). Это были общее количество 128 различных, пронумерованных характеров 0 в 127. Большинство, годные к печати, как a, 0, или =. Другими были символы контроля, как например возврат каретки (в пишущей машинке, использованной, чтобы помещать "автомобиль" пишущей машинки в начале линии), или разрыв линии (чтобы "отправлять колесо" и мочь писать в новой линии. Другие специальные символы этих 128 были разрывом страницы (изменять страницу), концом заголовка (для специальных протоколов), горизонтальными и вертикальными табуляциями (а именно, зазубриной), и т.д., и т.д.

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

Чтобы сохранять эти 128 характеров только ты нуждаешься в 7 битах (простая математика, 2^7 = 128). Как процессоры ведут себя лучше с 8 битами, которые с 7, каждый код Американский стандартный код обмена информацией (числовая стоимость, соответствующая каждому символу Американскому стандартному коду обмена информацией), сохраняют в 1-байтовом слове. Поскольку с 8 битами ты можешь сохранять до 256 характеров, но одинокий Американский стандартный код обмена информацией созерцает: тебе хватает половины!

CODE PAGES

Что мы делаем с этой другой половиной? Так как помещать больше характеров. Такой, Windows он изобрел code pages, которые являются только различными кодированиями, чтобы повторно использовать другие 128 доступных типов стоимости в одном байт. Так, стоимость 128 использовалась 255, чтобы представлять различные характеры, как ты был греческим, испанским (для акцента), русский или еврей, например.

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

Что он подразумевает? Что, если у тебя будет текстовый редактор, который думает, что он будет получать текст, кодировавший в греческом code page, стоимости 128 в 255, напечатают различным способом, что, если он подумает, что code page русский. Поэтому, тот же текст (набор байт / характеров), он идет печатать различным способом в различных редакторах или терминалах как кодировании, конфигурировавшем в вышеупомянутом печатающий / конечный, чтобы интерпретировать полученные тексты.

Очевидно, если я посылаю почту русскому с моего дома, русский будет получать бессмысленный текст, потому что он напечатает мою испанскую почту с русскими характерами. Однако, первая 128 стоимость (с 0 до 127), а именно, "часть Американский стандартный код обмена информацией", он идет печатать так же в любом случае, ввиду того, что эта первая половина набора стоимости стандартизирована и "он не покрывает".

Unicode

Очевидно, это code pages он был немного немного хаотичным (хотя не покойник), так что появились много стандартов, чтобы пробовать помещать немного команды. Так, есть такие различные стандарты как МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ-8859-1, которая ссылается на латинский алфавит (Американский стандартный код обмена информацией + ударные гласные, eñes, символ copyright и т.д.), МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ-8859-15 (изменение 8859-1 с символом евро, например), и т.д.

1-байтовое большинство, а именно, все с ограничением 255 характеров. До тех пор, пока не появляется Unicode. Unicode пробует мочь представлять все характеры мира, и - "кодирование 21 байт" (забота с ésto, я это осветляю потом). Есть символы для всех языков мира, для лингвистов, музыкальных символов, метеорологии, математики, смешанные (до мячей футбола или символа коммунизма), в конце концов, всего.

Первоначальный вопрос

"если я хочу изменить unicode в представление в char [...]"

Один char у него есть один байт. В одном char только ты можешь сохранять характеры, которые помещались бы в одном байт. А именно, любой символ Американский стандартный код обмена информацией, или МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ-8859-1 ИЛИ МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ-8859-15, и т.д., но не любой символ unicode. C и C ++ также они располагают "широкими характерами" (wchar), у которого есть два байт каждый, так что в одном wchar ты можешь сохранять до 65536 различных характеров.

Поскольку ты сможешь понимать, характерам unicode может быть нужно до 3 байт (хотя нестол большинство характеров unicode помещается в 2), так что не каждый символ unicode может сохранять в одном char. Кроме того, даже, хотя ты будешь сохранять характеры в wchar, это не подразумевает, что, если ты хочешь "показывать их из-за экрана", они будут видны правильно. Это зависит от кодирования конечной остановки или текстового редактора, где ты захотел увидеть эти характеры, или от, если редактор обнаруживает кодирование характеров, которое использует текст.

Когда ты программируешь, однако, бинарный объект, который у тебя есть, это не файл текста, это бинарный файл, и следовательно, у него нет кодирования характеров. "Стоимость", которую ты сохранял в одном wchar они будут сохранять в памяти как Вашем двоичном коде.

Когда ты "напечатаешь" (printf/cout), вышеупомянутый символ, конечная остановка, которая напечатает вышеупомянутый одинокий символ, будет получать бинарную последовательность, и не будет знать, получил ли он два chars или один wchar, так что он не узнает, если интерпретировать вышеупомянутую последовательность двумя характерами ASCII/ISO-8859 -* или как ни один символ 16 бит в любом другом кодировании 16 бит, которое существовало бы.

Есть проблема, чтобы определять "какое кодирование" возвращается, во время того, чтобы говорить ему в конечную остановку, как он, должно быть, показывает последовательности текста, который получал бы, а именно, как интерпретировать (подо что кодирование), бинарная цепь (если в характерах 1 или 2 байт, и какому символу в особенности соответствует каждая стоимость).

UTF-32 и UTF-16

Unicode, однако, - стандарт, не осуществление. С этим я хочу сказать, что Unicode предлагает mapeo между характерами и числовой стоимостью, не как осуществлять "механизм, который делает перевод". UTF-8, UTF-16 и UTF-32 - три из этих кодирований.

В UTF-32, каждый символ занимает 4 байт. Следовательно, каждый символ Unicode может представляться с UTF-32. То, что он перемещает, что большинство характеров почти практически любого текста на любом языке, только нуждается как максимум в 16 битах. Представь английский язык, который пишет "Hello" в файле UTF-32. Как файл - UTF-32, он будет сохранять каждый символ используя 32 бита, а следовательно цепь "Hello" займет (5 характеров) * (4 байт каждый символ) = 20 байт, когда в одинокой МЕЖДУНАРОДНОЙ ОРГАНИЗАЦИИ ПО СТАНДАРТИЗАЦИИ-8859-1 он занимает 5 байт. Это огромная расточительность.

В UTF-16, каждый символ занимает 2 байт (16 бит). Если бы было нужно представлять символ, который не помещался бы в 2 байт, он использовал бы 4 байт для этого символа. Так что UTF-16 он нуждается в механизме, чтобы знать, следующий символ текста, принадлежит ли он одной или двум словам. Таким образом, "Hello" занял бы 10 байт (половина); ты избавляешь много от места, и кроме того, только в неких особенных случаях, где ты нуждался в том, чтобы послать "большой" cáracter, все же ты сможешь представлять это.

Очевидно, если я покажу текст, кодировавший в UTF-16, в текстовом редакторе, который это знает (потому что я показываю это ему в редактор, или он это обнаруживает), он покажет правильно каждый символ, потому что он будет знать, как функционирует кодирование, и будет смотреть, занимает ли каждый символ 16 или 32 бита перед renderizarlo.

UTF-8

UTF-8 - другой конец. Используй 1-байтовые слова. Если будет хотеться представлять символ, который не помещался бы в 1 байт, он использует два. Если он нуждается в 3 байт, так как он использует 3 байт. Равно как UTF-16, у него есть механизм, чтобы играть с бинарной цепью так что представилась в то же время стоимость Unicode, соответствующий символу, и если вышеупомянутая стоимость unicode сохраняла в 1, 2 или 3 байт, и т.д. Y, если текстовый редактор знает, что он должен показывать файл UTF-8, так как он применит тот же алгоритм, чтобы обнаруживать размер следующего символа, который нужно печатать.

В тексте чисто Американский стандартный код обмена информацией, UTF-8 у него есть exáctamente тот же аспект, ввиду того, что первые 128 характеров Unicode - Американский стандартный код обмена информацией. Кроме того, он не проматывает память. Тема состоит в том, что, в существо UTF-8 кодирование изменчивого размера (каждый символ может занимать 1, 2 или 3 бита), приуменьшает место ("hello" он займет 5 байт), но максимизируется Ваша обработка, потому что в каждый символ он, должно быть, обнаруживает, если он занимает 1, 2 или 3 байт, что он делает в алгоритм более медленный, чем UTF-16, и еще больше, что в UTF-32.

Qt/GUI

Если ты хочешь показать, в окне, widget или чем-нибудь в этом роде, текст, ты можешь сохранять это как цепь, "вводя" в цепи последовательности как "Hola\u00F1" чтобы показывать соответствующую стоимость Unicode. То, что делает составитель, состоит в том, чтобы заменять появление последовательности "\u00F1" из-за бинарного представления в UTF-8 символа Unicode, соответствующего стоимости 0x00F1.

Потом, если ты перемещаешь вышеупомянутую цепь в QString::fromUtf8, вышеупомянутая функция прочитает "binariamente" полученную цепь как будто это была цепь в UTF-8 (что это, ввиду того, что префикс "Hola" он UTF-8, так как UTF-8 он совместим с Американским стандартным кодом обмена информацией, и символом 0x00F1 он был заменен последовательностью UTF-8 соответствующая), и он это будет сохранять в Ваш способ.

Потом, если проходит этот WString с цепью, правильно сохраняемой в widget, чтобы быть нарисованным, Qtон возьмется за то, чтобы говорить соответствующим образом с "графическим администратором" твоей системы для того, чтобы это был этот, кто в конце концов печатает цепь подходящего способа. Совсем очень приведенный в соответствие где-то здесь.

Заметь: В действительности, буквальный цепи ("...") что содержал характеры Unicode, может преобразовываться в цепь UTF-8, UTF-16 или любая другая. Не стандартизировано, какое кодирование должно использоваться в этих случаях (хотя он обычно будет UTF-8). В C ++ 11, однако, добавили нотацию u8"..." чтобы показывать, что цепь должна кодироваться в UTF-8, u"..." для UTF-16, и U"..." для UTF-32.

Окончательно,

ты поймешь, что ты не можешь перемещать символ простого unicode char.

3
ответ дан 24.11.2019, 13:08

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

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

В Wikipedia у тебя есть список самых использованных.

1
ответ дан 24.11.2019, 13:08

Теги

Похожие вопросы