window s下ANSI 、Unicod e、UTF-8编码转换1几种编码方式的说明
1ANSI 一般的txt编码都是AN SI 可以通过另存为指定其它编码方式在c/c++中的c har 、 unsign ed char等均属于该类型
2Unicod e 分为UTF-8、UTF-16和UTF-32一般在Win dows里面提到Unicode编码方式默认指的是UTF-16
1UTF-8使用1-4字节来表示字符常用的ASC II字符使用1字节汉字一般都是3字节
2UTF-16统一使用2字节表示所有字符不考虑所谓的代理 现在广泛的应用于Windows系统
3UTF-32统一使用4字节表示所有字符。
2转换前准备string、wstrin g #includ e<string>c out、 wc o utcha r、 wc ha r_t
使用wcou t输出wst ring时需要加上setlocale(LC_ALL, ".936");
设置输出窗口的编码方式否则无法输出 。
3编码转换
采用Wind ows提供的API接口函数MultiByte To Wide Char和
MultiByteTo Wi deChar来实现便慢慢转换程序如下
1 ANSI和U nicode的相互转换Window s下Unic ode指的是UTF-16void string2wstring(const string&_str,wstring&_wstr)
{if(_str=="")r e turn;
_wstr=L"";int wlen=MultiByteToWide Char(CP_ACP,0,_str.c_str(), -1,NULL,0);wchar_t*pwc=new wchar_t[wlen];mems et( (char*)pwc,0,wlen*2);
MultiByte ToWide Char(CP_ACP,0,_str.c_str(), -1,pwc,wlen);
_ws tr=pwc;
/*unsigned char*p=(unsigned char*)pwc;for( int i=0; i<wlen*2;++i)c out<<uppercase<<hex<<int(p[i])<<" ";cout<<endl;*/delete[]pwc;
}
2 Unicod e转向ANS I
string&wstring2 string(c onst wstring&_wstr, string&_str)
{if(_wstr==L"")re turn_str;
int len=Wide CharToMultiByte(CP_ACP,0,_wstr.c_str(), -1,NULL,0,NULL,NULL);unsigned char*pc=new unsigned char[len];memset(pc,0, len);
Wi de CharTo MultiByte(CP_ACP,0,_wstr.c_str(), -1, (char*)pc, len,NULL,NULL);
_str=(c har*)pc;
/*for( int i=0; i<len;++i )cout<<uppercase<<hex<<int(pc[i])<<" ";cout<<endl;*/delete[]pc;re turn_str;
}
3 utf-8转向uni code注意utf-8文本的开头会有0xEF、 0xBB和0xBF作为标记void UTF8 string2wstring(const string&_str,wstring&_wstr)
{if(_str=="")r e turn;string str;if(_str.size()>3&&
(uns i gne d c har)_s tr[0]==0 xEF&&
(unsigned char)_str[1]==0xBB&&
(unsigned char)_str[2]==0xBF)str=_str.substr(3);elsestr=_str;
_wstr=L"";int len=_str.size()+1;int wlen=MultiByteToWide Char(CP_UTF8,0, str.c_str(), -1,NULL,0);wchar_t*pwc=new wchar_t[wlen];mems et( (char*)pwc,0,wlen*2);
MultiByte ToWide Char(CP_UTF 8,0,str.c_str(), -1,pwc,wlen);
_ws tr=pwc;
/*unsigned char*p=(unsigned char*)pwc;for( int i=0; i<wlen*2;++i)
c out<<uppercase<<hex<<int(p[i])<<" ";cout<<endl;
*/delete[]pwc;
}
4Unico d e转向UTF-8Unico d e文本的开头是0xFF和0xFEstring&wstring2utf8string(c onst wstring&_wstr, string&_str)
{if(_wstr==L"")re turn_str;
int len=WideCharToMultiByte(CP_UTF8,0,_wstr.c_str(), -1,NULL,0,NULL,NULL);unsigned char*pc=new unsigned char[len];memset(pc,0, len);
Wide CharToMultiByte(CP_UTF 8,0,_wstr.c_str(), -1, (char*)pc, len,NULL,NULL);
_str=(c har*)pc;
/*for( int i=0; i<len;++i )cout<<uppercase<<hex<<int(pc[i])<<" ";cout<<endl;*/delete[]pc;re turn_str;
}
今天父亲节我们有没有陪伴家人一起吃个饭,还是打个电话问候一下。前一段时间同学将网站账户给我说可以有空更新点信息确保他在没有时间的时候还能保持网站有一定的更新内容。不过,他这个网站之前采用的主题也不知道来源哪里,总之各种不合适,文件中很多都是他多年来手工修改的主题拼接的,并非完全适应WordPress已有的函数,有些函数还不兼容最新的PHP版本,于是每次出现问题都要去排查。于是和他商量后,就抽时间把...
SpinServers服务商也不算是老牌的服务商,商家看介绍是是2018年成立的主机品牌,隶属于Majestic Hosting Solutions LLC旗下。商家主要经营独立服务器租用和Hybrid Dedicated服务器等,目前包含的数据中心在美国达拉斯、圣何塞机房,自有硬件和IP资源等,商家还自定义支持用户IP广播到机房。看到SpinServers推出了美国独服的夏季优惠促销活动,最低月...
cloudcone经常性有特价促销VPS放出来,每次的数量都是相当有限的,为了方便、及时帮助大家,主机测评这里就做这个cloudcone特价VPS补货专题吧,以后每次放货我会在这里更新一下日期,方便大家秒杀!官方网站:https://cloudcone.com/预交费模式,需要充值之后方可使用,系统自动扣费!信用卡、PayPal、支付宝,均可付款购买!为什么说cloudcone值得买?cloudc...