怎样区分一个缓冲区中存的是ANSI字符串还是UNICODE字符串
如题!
望高手们解答.........
[解决办法]
ANSII的话 应该类似 31 32 33
UNICODE 应该是31 00 32 00 33 00
[解决办法]
单纯从缓冲区来看,藐视还真没办法。
[解决办法]
在缓冲末尾加00 00,然后分别用ASCII和Unicode函数输出一下,看有没有乱码:
如果ASCII和Unicode输出函数都没有乱码,那肯定是ACSII了;
如果ASCII输出函数输出乱码,Unicode输出函数输出正常,那肯定是unicode了;
如果...
如果...
然后我把lz弄的神经错乱了,我自己也神经错乱。
警告:
以上回答纯属胡言乱语,错信者后果自负。对于那些造成神经错乱,精神失常者,本人概不负责!!!
[解决办法]
[解决办法]
'2'在内存中是32
L'2'在内存中是32 00
"2"在内存中也是32 00
L"2"在内存中是32 00 00 00
[解决办法]
[解决办法]
unicode 一般都是大于128(unisigned)的byte开头然后连续两个字符(如果只有asc和unicode的话)
[解决办法]
在windows字符编码中有一个BOM概念,BOM是用来表示字节顺序即大端和小端,因为ANSI是一个字节,不会出现字节顺序,因此不需要BOM来标识字节顺序,这样我们可以对缓冲区中的前两个字节进行判断,如果不是FF FE或者不是FE FF的话,可以说明是ANSI字符,否则可以认为是UNICODE字符(当然了我们没有考虑UTF-8和UTF-16字符编码),只是一个简单的判断方法!