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

}

云如故枣庄高防(49元)大内存2H2G49元8H8G109元

云如故是一家成立于2018年的国内企业IDC服务商,由山东云如故网络科技有限公司运营,IDC ICP ISP CDN VPN IRCS等证件齐全!合法运营销售,主要从事自营高防独立服务器、物理机、VPS、云服务器,虚拟主机等产品销售,适合高防稳定等需求的用户,可用于建站、游戏、商城、steam、APP、小程序、软件、资料存储等等各种个人及企业级用途。机房可封UDP 海外 支持策略定制 双层硬件(傲...

CloudCone(20美元/年)大硬盘VPS云服务器,KVM虚拟架构,1核心1G内存1Gbps带宽

近日CloudCone商家对旗下的大硬盘VPS云服务器进行了少量库存补货,也是悄悄推送了一批便宜VPS云服务器产品,此前较受欢迎的特价20美元/年、1核心1G内存1Gbps带宽的VPS云服务器也有少量库存,有需要美国便宜大硬盘VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务...

DMIT(8.72美元)日本国际线路KVM月付8折起,年付5折

DMIT.io是成立于2018年的一家国外主机商,提供VPS主机和独立服务器租用,数据中心包括中国香港、美国洛杉矶和日本等,其中日本VPS是新上的节点,基于KVM架构,国际线路,1Gbps带宽,同时提供月付循环8折优惠码,或者年付一次性5折优惠码,优惠后最低每月8.72美元或者首年65.4美元起,支持使用PayPal或者支付宝等付款方式。下面列出部分日本VPS主机配置信息,价格以月付为例。CPU:...

unicode转换为你推荐
iproute两个独立局域网 互相访问。怎么做。支付宝调整还款日支付宝调整花呗还款日,这个调整有没有对你造成什么影响?申请支付宝账户申请支付宝账号注册三友网怎么是“三友”科创板首批名单江苏北人的机器人在同行中的评价怎么样?35邮箱邮箱地址怎么写中国保健养猪网最具权威的养猪信息网站是哪个 啊网络u盘网吧网络U盘是怎么弄的discuz伪静态Discuz! X3.0 到底能不能伪静态?门户怎么伪静态?kingcmsKingcms 怎么解决会员登录页面的问题
域名备案信息查询 krypt edgecast 60g硬盘 ibox官网 大容量存储器 admit的用法 网站在线扫描 空间租赁 上海电信测速网站 沈阳主机托管 个人免费邮箱 comodo cc攻击 次时代主机 电脑主机响 主机声音大 免费免备案cdn 电脑主机报价 厦门电信宽带 更多