编码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;

}

bgpto:BGP促销,日本日本服务器6.5折$93/月低至6.5折、$93/月

bgpto怎么样?bgp.to日本机房、新加坡机房的独立服务器在搞特价促销,日本独立服务器低至6.5折优惠,新加坡独立服务器低至7.5折优惠,所有优惠都是循环的,终身不涨价。服务器不限制流量,支持升级带宽,免费支持Linux和Windows server中文版(还包括Windows 10). 特色:自动部署,无需人工干预,用户可以在后台自己重装系统、重启、关机等操作!bgpto主打日本(东京、大阪...

CheapWindowsVPS$4.5/月,美国VPS/免费Windows系统/1Gbps不限流量/,可选美洲、欧洲、亚洲等8大机房

国外商家提供Windows系统的并不常见,CheapWindowsVPS 此次提供的 2 款 VPS 促销套餐,提供 5 折永久优惠码,优惠后月付 4.5 美元起,价格还是挺诱人的,VPS 不限流量,接入 1Gbps 带宽,8 个机房皆可选,其中洛杉矶机房还提供亚洲优化网络供选择,操作系统有 Windows 10 专业版、2012 R2、2016、Linux等。Cheap Windows VPS是...

CloudCone:$17.99/年KVM-1GB/50GB/1TB/洛杉矶MC机房

CloudCone在月初发了个邮件,表示上新了一个系列VPS主机,采用SSD缓存磁盘,支持下单购买额外的CPU、内存和硬盘资源,最低年付17.99美元起。CloudCone成立于2017年,提供VPS和独立服务器租用,深耕洛杉矶MC机房,最初提供按小时计费随时退回,给自己弄回一大堆中国不能访问的IP,现在已经取消了随时删除了,不过他的VPS主机价格不贵,支持购买额外IP,还支持购买高防IP。下面列...

unicode转换为你推荐
操作httpphpweb破解painter破解版中文版企业cms目前最好用的企业cms是哪个?360退出北京时间北京时间校准显示时间美要求解锁iPhone苹果美版有锁和无锁的区别人人视频总部基地落户重庆2019.5.30号以后重庆有了新的迁入户口政策,请问外省户口以一般人才方式迁入重庆,可以按揭买房吗duplicate500温州商标注册温州代理注册个商标是怎么收费的?我爱试用网我发现我对性爱这个话题好敏感!来吧看谁能把我下面说湿了?要200以上的才好评啊!我爱e书网手机怎么下载电子书
韩国俄罗斯 cpanel 京东云擎 圣诞促销 秒杀汇 cdn加速是什么 789电视剧 web服务器是什么 电信网络测速器 阿里云邮箱登陆地址 域名转入 ssl加速 黑科云 学生机 碳云 神棍节 neicun qq部落18-3 qq空间打开慢 sockscap下载 更多