字符编码:
以"abc中"为示例:
ANSI:
61 62 63 D6 D0
ASICII码使用一个字节,中文占用2个字节
UTF-8:
EF BB BF 61 62 63 E4 B8 AD
变长,最常用!有容错性!
EF BB BF表示是UTF8
UTF-16-BE:
FE FF 00 61 00 62 00 63 4E 2D
FE FF表示大端,编码固定都使用2个字节
UTF-16-LE:
FF FE 61 00 62 00 63 00 2D 4E
FF FE表示小端,编码固定都使用2个字节
Man gcc
/charset
源文件用不同编码方式编写,会导致输出结果不一样
如何解决?
编译程序时,制定字符集
-finput-charset=xxx 表示源文件的编码方式,默认以UTF-8来解析
-fexec-charset=xxx 表示可执行程序里的字符以什么编码方式来表示,默认是UTF-8
gcc –finput-charset=GBK –fexec-charset=UTF-8 –o utf-8 ansi.c