C语言也支持把通用字符名称(universal character name)作为使用扩展字符集的方法,而不管C的实现版本采用何种编码.可以使用通用字符名称指定扩展字符,而通用字符名称就是其Unicode的值,格式如下.
\uxxxx或者\UXXXXXXXX
其中XXXX或XXXXXXXX是十六进制表示法的Unicode码点(code point,指的是码集合内的一个码).小写的u后面接着四个十六进制数字,或者大写的U后面接着正好八个十六进制数字.如果某个码点前四个十六进制数字是零,那么其通用字符名称写成\uXXXX或\U0000XXXX都可以.
通用字符名称可以用于标识符、字符常量、字符串字面值中。然而,通用字符名称不可以用于表示基本字符集内的字符。
当用通用字符名称的方式表示一个字符的时候,编译器会将其存储在实现版本所使用的字符集内。比方说,如果一个本土化(localized)程序内的运行字符集是ISO8859-7(8位希腊),那么下列的定义将变量alpha的值初始化位\xE1的码:
char alpha='\u03B1';
然而,如果此运行字符集是UTF-16,需要将此变量定义成一个宽字符:
wchar_t alpha='\u03B1';
在这个例子中,被赋值到alpha的字符码值是十六进制的3B1,和通用字符名称一样。
注意:有的编译器不支持通用字符名称。