一. 多字节字符
1. 基于ASCII的GB2312
标准ASCII表 0 ~ 127
拓展ASCII表 0 ~ 255
GB2312 10000000 ~ 11111111(高位) + 10000000 ~ 11111111(低位)
问题:不同国家的字符集会产生乱码
2. 基于UNICODE的UTF-8
UNICODE(同一码 / 万国码):unicode是2个字节。 这一标准的2字节形式通常称作UCS-2(UnicodeCharacterSet)(原ASCII也位双字节)。然而,受制于2字节数量的限制,UCS-2只能表示最多65536个字符。Unicode的4字节形式被称为UCS-4或UTF-32,能够定义Unicode的全部扩展,最多可定义100万个以上唯一字符。
UTF-8:是针对Unicode的一种可变长度字符编码。
二. C语言中的宽字符
1. 在C语言中使用wchar_t表示宽字符,使用L告知编译器使用Unicode表。wchar_t x1 = L'中';
2. 使用(拓展ASCII码表)GB2312以\0结尾:char x[] = "中国"; 使用UniCode编码表以\0\0结尾:wchar_t x1[] = L"中国";
3. 在控制台打印
char x[] = "中国";
wchar_t x1[] = L"中国";
printf("%s\n",x); //使用控制台默认的编码
wprintf