2014-01-20 3 views
1

В C, я обнаружил, что есть два юникод экранирующих последовательностей \u и \UUnicode элемента код формата Unnnnnnnn

\u takes the format - \unnnn 
\u takes the format - \Unnnnnnnn 

Например, эта программа

#include<stdio.h> 
int main(int argc, char* argv[]) { 
    printf("Unicode character for snowman : \u2603"); 
    printf("Trying for a valid U+nnnnnnn character : \U10FFFF"); /* this will be an error as it needs U+nnnnnnnn */ 
} 

печати действительного юникода для первого один. Но я не могу найти код, подходящий в формате U + nnnnnnnn

Можете ли вы объяснить, что представляет собой эта 32-разрядная (?) Кодовая точка Unicode? Назовите меня действительным персонажем, таким как снеговик?

+3

'0x10FFFFFF' не является действительной кодовой точкой. Наибольший, действительно эффективный код Unicode - '0x10FFFF'. (Хороший компилятор должен был сказать вам это.) –

+0

@KerrekSB - Спасибо. Тогда что является допустимым значением для U + nnnnnnnn? –

+0

Попробуйте '\ U00000041'. –

ответ

4

\unnnn могут быть использованы только для символов в "Basic Multilingual Plane" (т.е. до U + FFFF), в то время как \Unnnnnnnn может выразить все возможные символы Unicode.

Например

printf("Unicode character MUSICAL SYMBOL G CLEF : \U0001D11E\n"); 

производит

 
Unicode character MUSICAL SYMBOL G CLEF : 

(если этот символ присутствует в шрифте, используемом терминале).

Таблицы для всех символов Юникода можно найти в http://unicode.org. Полный список: http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt.

+4

'\ Unnnnnnnn' также может использоваться для символов в BMP. Например, символ «SNOWMAN» может быть записан либо как '\ u2603', либо как' \ U00002603' (хотя, вероятно, нет веской причины использовать последний, если только для симметрии в списке, содержащем другие символы, отличные от BMP). –

+2

Совершенно нормально использовать '\ U' для вещей * в * BMP, например' \ U00000041'. –

+1

Да, вы оба правы. Я имел в виду, что для этих символов вам нужно '\ Unnnnnnnn'. Я постараюсь улучшить формулировку .... –

Смежные вопросы