字符集与编码(解决一次C#与C++程序通讯乱码问题)

弄清楚Charset和Encoding的区别

字符集(Charset)

字符集即字符的集合,规定了在这些集合里面有哪些字符,每一个字符都有一个编号(一个整数),但这只是编号不是编码。

编码(Encoding)

编码就规定了一个字符的编号如何与二进制交互。

ANSI与Unicode

ANSI多字节字符集常见的编码

GB2312是ANSI编码里的一种,对ANSI编码最初始的ASCII编码进行扩充,为了满足国内在计算机中使用汉字的需要,中国国家标准总局发布了一系列的汉字字符集国家标准编码,统称为GB码,或国标码。

如果在windows平台,进行Socket通信,使用C++开发的一端使用的ANSI字符集,那么传输文本时,C#就需要对文本编码为GB2312才能正常传输中文信息。

Unicode宽字符集常见编码

UTF-8编码,UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。