注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

请移步gmd20.github.com

// 编程和生活。不再使用,网易博客功能异常他们都没人维护了

 
 
 

日志

 
 

C++的字符编码unicode的详细介绍(Unicode in C++)  

2014-09-24 14:46:44|  分类: C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
CppCon2014 上面的篇文章对字符编码的讲解很详细。

Unicode in C++
James McNellis (@JamesMcNellis)
Senior Software Development Engineer
Microsoft Visual C++

详细的介绍的unicode的各种编码, ucs-2  utf-8  utf16 utf-32的关系和优缺点等。

c++ 11 里面多了几个表示 utf8  utf 16 和utf32的关键字

正确和文法
char a{'x'};
char b{'?'}; // Wrong
char c{'?'}; // Wrong
char16_t d{u'x'};
char16_t e{u'?'};
char16_t f{u'?'}; // Wrong
char32_t g{U'x'};
char32_t h{U'?'};
char32_t i{U'?'};
char a{'\u0078'};
char b{'\u2603'}; // Wrong
char c{'\U0001F378'}; // Wrong
char16_t d{u'\u0078'};
char16_t e{u'\u2603'};
char16_t f{u'\U0001F378'}; // Wrong
char32_t g{U'\U00000078'};
char32_t h{U'\U00002603'};
char32_t i{U'\U0001F378'};


相应的字符串类型
?UTF-8 char std::string
?UTF-16 char16_t std::u16string
?UTF-32 char32_t std::u32string

std::string a{u8"Hello, \u2603!"};
std::string b{u8"Hello, ?!"};
std::u16string c[]{u"Hello, \u2603!"};
std::u16string d[]{u"Hello, ?!"};
std::u32string e[]{U"Hello, \u2603!"};
std::u32string f[]{U"Hello, ?!"};




std::locale loc{"en-US"};
char lowercase_a{'a'};
char uppercase_a{std::toupper(lowercase_a, loc)}; // A



c++ 11的新头文件,提供各种编码转换
Encoding Conversions using <codecvt>


  评论这张
 
阅读(465)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018