你木有听懂我的意思,我经过测试,发现在两种字符集下,
char ch1[100] = "abc中国";
在内存中写入的数据都是
61 62 63 D6 D0 B9 FA 00,我的疑问是为什么unicode字符集下写入的数据不是61 00 62 00 63 00 2D 4E FD 66 00 00呢
char ch1[100] = "abc中国";
在内存中写入的数据都是
61 62 63 D6 D0 B9 FA 00,我的疑问是为什么unicode字符集下写入的数据不是61 00 62 00 63 00 2D 4E FD 66 00 00呢
char ch1[100] = "abc中国";
在内存中写入的数据都是
61 62 63 D6 D0 B9 FA 00,我的疑问是为什么unicode字符集下写入的数据不是61 00 62 00 63 00 2D 4E FD 66 00 00呢我还真让你说糊涂了
你说的内存是哪里
char ch1[100] = "abc中国";
在内存中写入的数据都是
61 62 63 D6 D0 B9 FA 00,我的疑问是为什么unicode字符集下写入的数据不是61 00 62 00 63 00 2D 4E FD 66 00 00呢我还真让你说糊涂了
你说的内存是哪里
char ch1[100] = "abc中国";
我说的内存是用fwrite()向记事本里面写入数据:ch1[100];
然后通过ue打开看到的16进制表示:61 62 63 D6 D0 B9 FA 00;
两种字符集下fwrite()向记事本写入的数据都是:61 62 63 D6 D0 B9 FA 00;
这就是我疑惑的地方,为什么unicode字符集下写入的数据不是61 00 62 00 63 00 2D 4E FD 66 00 00呢?更直观一点,字符集的差异在哪里才会体现?
不论在多字符集还宽款字符集下,
"abc中国"是以多字符集的方式存放:61 62 63 D6 D0 B9 FA 00;
而L"abc中国"是以宽字符集的方式存放:61 00 62 00 63 00 2D 4E FD 66 00 00
这个说法对吗?
wchar_t ch2[100] = L"abc中国";你这里已经显式的决定了他们分别是什么字符集的字符串,前者是多字节字符集的字符串,后者是宽字节字符集(Unicode)的字符串。这个不会受工程的字符集设置所影响。会受工程的字符集设置影响的是
TCHAR ch[100] = _T("abc中国");这样,当工程设置为多字节字符集时,这个ch和上面的ch1是一样的,当工程设置为宽字节字符集(Unicode)时,这个ch和上面的ch2是一样的。