1、什么时候用Unicode(宽字节),什么时候用ANSI(多字节)?
在linux/windows等操作系统中使用的,一般都是Unicode(宽字节)。
下位机PLC/单片机等硬件设备中使用,一般都是ANSI(多字节)。
所以,通讯中(比如VS项目:Socket/串口等),RecvDataEvent接收的内容要用MultiByteToWideChar(),将 ANSI(多字节) =>转换为 Unicode(宽字节);
SendData向外发送数据前,使用WideCharToMultiByte(),将 Unicode(宽字节) =>转换为ANSI(多字节)输出。
2、Unicode(宽字节)、ANSI(多字节) 是什么意思,为什么称为宽字节、多字节?
概念
可以认为 ANSI /MBCS(多字节字符集) /本地编码 是同一个概念,不同的国家和地区制定了不同的标准,有GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准,ASCII就是美国国家的ANSI标准。
一个国家的代码到另一个国家使用,有可能由于编码标准不一致,导致乱码,于是才有了万国码Unicode(统一字符编码),各国通用。