编码方法大总结
现有的主流编码格式有ansi、utf-8、unicode、gbk
一、ansi
ascii是7位字符集,它是美国信息交换标准代码的缩写,是为了美国英语通信所设计的。
为了能表示欧美文字重一些带有音调标号的文字,创建出了包含255个字符的8位ascii字符集,0-127与基本ascii一致,128-255之间的字符用于画图和画线。
二、unicode
unicode又叫同一码、万国码。
1、是一种在计算机上使用的字符编码;
2、它为每种语言的每个字符都设定了统一并且唯一的二进制编码;
3、能够跨语言、跨平台进行文本转换。
三、utf-8
utf-8是unicode的一种变长字符编码。utf-8用1到6个字节编码unicode字符。
如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。
实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNCODE字符转化成UTF-8将需要至少2个字节。
四、gbk/gb232
gbk是中文信息处理的国家标准,是中文编码格式。
五、编码格式之间的转换
1、gbk、utf-8转化为unicode
int n=::MultiByteToWideChar(CP_ACP,0,strHtml.GetBuffer(),-1,NULL,0) ;
WCHAR *str1=new WCHAR[n];
MultiByteToWideChar(CP_ACP,0,strHtml.GetBuffer(),-1,str1,n);
注:此时的strHtml既为unicode编码的内容。一般在vs的MFC中都是unicode编码,所以的字符串都尽量使用unicode编码,_T("my name is LILei");
2、unicode转化为gbk、utf-8
举例为:unicode转utf-8
n=WideCharToMultiByte(CP_UTF8,0,str1,-1,NULL,0,NULL,NULL);
char * str2=new char[n];
WideCharToMultiByte(CP_UTF8,0,str1,-1,str2,n,NULL,NULL);
string strUTFHtml=str2;