赞
踩
首先,我们要明白,GB2312、GBK和UTF-8都是一种字符编码。除此之外,还有好多字符编码。只是对于我们中国人的网站来说,用这三种编码比较多。
简单的说一下,为什么要用编码?在计算机内,储存文本信息用ASC II码,每一个字符对应着唯一的ASCII码。最初计算机是由美国发明的,他们也用的是键盘和上面的字母,所以他们的字符ASCII好解决。但是我们中国 的就不同了,每个汉字要对应唯一的ASCII码。这样,就出来了国家制定的字符编码标准:GB2312、GBK等。其他国家,其他语言也有他们对应的编码 标准。
GB 就是国标的意思,GB2312和GBK主要用于汉字的编码,而UTF-8是全世界通用的。意思就是说,如果你的网页主要面对使用汉语的中国人的话,使用 GB2312 和 GBK 非常好,文字储存体积要小,有一些优点。如果你的网页要面向世界的话,你再用GB2312 和 GBK 作为网页编码,有些电脑上的浏览器没有这种编码,你的网页汉字内容就会变成无法识别的乱码。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换(GBK、GB2312 -- Unicode -- UTF8 )
使用UTF-8的一个好处:其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字,而不会出现乱码。
中国大陆最常用的就是GBK18030编码,除此之外还有GBK,GB2312,这几个编码的关系是这样的。 最早制定的汉字编码是GB2312,包括6763个汉字和682个其它符号 95年重新修订了编码,命名GBK1.0,共收录了21886个符号。 之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持GBK18030编码。
通常,服务端与客户端之间进行数据传输,涉及到中文,往往都会涉及到编码的转换。服务端在遇到中文时,都会转换为UTF-8格式。而客户端接收到服务端数据时,一般会把该数据的中文字符转为GBK(GB2312)才能正常显示。
- //utf8_to_gb2312
- string utf8_to_gb2312(const char* utf8)
- {
- int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
- wchar_t* wstr = new wchar_t[len + 1];
- memset(wstr, 0, len + 1);
- MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);
- len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
- char* str = new char[len + 1];
- memset(str, 0, len + 1);
- WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
- string strTemp = str;
- if (wstr)
- delete[] wstr;
- if (str)
- delete[] str;
-
- return strTemp;
- }
-
- //gb2312_to_utf8
- string gb2312_to_utf8(const char* gb2312)
- {
- int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
- wchar_t* wstr = new wchar_t[len + 1];
- memset(wstr, 0, len + 1);
- MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
- len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
- char* str = new char[len + 1];
- memset(str, 0, len + 1);
- WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
- string strTemp = str;
- if (wstr)
- delete[] wstr;
- if (str)
- delete[] str;
-
- return strTemp;
- }
Value | Description |
---|---|
CP_ACP | ANSI code page |
CP_MACCP | Not supported |
CP_OEMCP | OEM code page |
CP_SYMBOL | Not supported |
CP_THREAD_ACP | Not supported |
CP_UTF7 | UTF-7 code page |
CP_UTF8 | UTF-8 code page |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。