编码windows下ANSI、Unicode、UTF-8编码转换代码

unicode转换  时间:2021-04-12  阅读:()

window s下ANSI 、Unicod e、UTF-8编码转换1几种编码方式的说明

1ANSI 一般的txt编码都是AN SI 可以通过另存为指定其它编码方式在c/c++中的c har 、 unsign ed char等均属于该类型

2Unicod e 分为UTF-8、UTF-16和UTF-32一般在Win dows里面提到Unicode编码方式默认指的是UTF-16

1UTF-8使用1-4字节来表示字符常用的ASC II字符使用1字节汉字一般都是3字节

2UTF-16统一使用2字节表示所有字符不考虑所谓的代理 现在广泛的应用于Windows系统

3UTF-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;

}

4Unico d e转向UTF-8Unico 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;

}

HostRound:美国达拉斯/洛杉矶/纽约/荷兰大硬盘服务器,1TB NVMe+4TB HDD,$179/月

hostround怎么样?大硬盘服务器,高防服务器。hostround,美国商家,2017年成立,正规注册公司(Company File #6180543),提供虚拟主机、VPS云主机、美国服务器、荷兰服务器租用等。现在有1款特价大硬盘独服,位于达拉斯,配置还不错,本月订购时包括免费 500Gbps DDoS 保护,有兴趣的可以关注一下。点击直达:hostround官方网站地址美国\荷兰独立服务器...

RAKsmart 年中活动 独立服务器限时$30秒杀 VPS主机低至$1.99

RAKsmart 虽然是美国主机商,但是商家的主要客户群还是在我们国内,于是我们可以看到每次的国内节日促销活动期间商家也会发布促销。包括这次年中大促活动,RAKsmart商家也有发布为期两个月的年终活动,其中有商家擅长的独立服务器和便宜VPS主机。服务器包括站群服务器、特价服务器、高达10G带宽不限制流量的美国服务器。商家优惠活动,可以看到对应商品的优惠,同时也可以使用 优惠码 RAKBL9 同时...

CloudCone2核KVM美国洛杉矶MC机房机房2.89美元/月,美国洛杉矶MC机房KVM虚拟架构2核1.5G内存1Gbps带宽,国外便宜美国VPS七月特价优惠

近日CloudCone发布了七月的特价便宜优惠VPS云服务器产品,KVM虚拟架构,性价比最高的为2核心1.5G内存1Gbps带宽5TB月流量,2.89美元/月,稳定性还是非常不错的,有需要国外便宜VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器提供商,国外实力大厂,自己开...

unicode转换为你推荐
toupian小学语文 拼音表现有新的ios更新可用请从ios14be苹果xr可不可以更新ios14http500http 500是什么意思?mediawikiMediaWiki的权限及设置申请支付宝账户如何申请支付宝账户资费标准电信4G套餐?瑞东集团中粮集团是什么性质的企业zencart模板求zen-cart 模板结构joomla安装下载app并安装ie假死我的ie浏览器偶尔出现假死的情况 即打开浏览器时无法显示网页 点了关闭窗口也没反应,请问这是怎么回事啊
域名邮箱 vps是什么 万网免费域名 enzu bluevm softlayer 主机点评 blackfriday 10t等于多少g 发包服务器 ibox官网 卡巴斯基试用版 美国网站服务器 cloudlink google台湾 万网主机管理 cxz 主机管理系统 lamp怎么读 服务器硬件配置 更多