目录

1.各种编码格式

参考:


针对C++中文会乱码的问题

1.各种编码格式

  • 中文操作系统默认ansi编码

不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。

ANSI编码表示英文字符时用一个字节,表示中文用两个或四个字节。

  • unicode是国际通用编码

每个字母或汉字都是两个字节

  • utf-8编码是unicode编码在网络之间(主要是网页)传输时的一种“变通”和“桥梁”编码。

英文字母为一个字节,中文为三个字节,处理中文很不方便,将string转为u16string则每个字母或汉字为两个字节,处理起来比较方便。

#include <string>
#include <codecvt>
#include <locale>
#include <iostream>std::u16string to_utf16( std::string str ) // utf-8 to utf16
{ return std::wstring_convert< std::codecvt_utf8_utf16<char16_t>, char16_t >{}.from_bytes(str); }std::string to_utf8( std::u16string str16 )
{ return std::wstring_convert< std::codecvt_utf8_utf16<char16_t>, char16_t >{}.to_bytes(str16); }std::u32string to_utf32( std::string str )
{ return std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t >{}.from_bytes(str); }std::string to_utf8( std::u32string str32 )
{ return std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t >{}.to_bytes(str32); }std::wstring to_wchar_t( std::string str )
{ return std::wstring_convert< std::codecvt_utf8<wchar_t>, wchar_t >{}.from_bytes(str); }std::string to_utf8( std::wstring wstr )
{ return std::wstring_convert< std::codecvt_utf8<wchar_t>, wchar_t >{}.to_bytes(wstr); }int main()
{const std::string utf8 = "hello world!\n" ;const std::u16string utf16 = to_utf16( utf8 ) ;std::cout << to_utf8(utf16) ;const std::u32string utf32 = to_utf32( utf8 ) ;std::cout << to_utf8(utf32) ;const std::wstring wstr = to_wchar_t(utf8) ;std::wcout << wstr ;std::cout << to_utf8(wstr) << "---------------------\n" ;
}

参考:

  1. https://blog.csdn.net/forest_fire/article/details/81011090
  2. https://blog.csdn.net/weixin_34396103/article/details/92366595

string,wstring,u16string,u32string相互转换相关推荐

  1. string wstring

    摘自:stackoverflow string? wstring? std::string is a basic_string templated on a char, and std::wstrin ...

  2. boost库学习随记五 Boost.Locale 之字符转换 gbk utf8 big5 string wstring等

    Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式.它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升. Boost.Locale提供强大的 ...

  3. Boost.Locale 之字符转换 gbk utf8 big5 string wstring等

    Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式.它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升. Boost.Locale提供强大的 ...

  4. C++ string wstring CString 字符串转换

    说明:     0.实质是 char* <--> wchar_t* 的转换     1.cout输出char*,wcout输出wchar_t*或char*     2.ANSI (Mult ...

  5. golang 中string和int类型相互转换

    总结了golang中字符串和各种int类型之间的相互转换方式: string转成int: test_int, err := strconv.Atoi(test_string) if err != ni ...

  6. Go 中string和int类型相互转换

    string转成int: int, err := strconv.Atoi(string) string转成int64: int64, err := strconv.ParseInt(string, ...

  7. C++ string与vectorfloat类型相互转换之stringstream

    1.stringstream类型转换用法 streamstring在调用str()时,会返回临时的string对象.而因为是临时的对象,所以它在整个表达式结束后将会被析构. 如果需要进一步操作stri ...

  8. C# String 与 Ushort[] 数组 相互转换

    String To Ushort[]  数组输出 思路:  string  ->  char[] -> byte[] -> byte[2] -> ushort -> us ...

  9. Java中String与char数组相互转换

    java中对string的操作很多时候不如对char[]操作的方便,所以介绍一些String字符串和char[]互换的方法: String直接转char[] 使用String.toCharArray( ...

最新文章

  1. java面试题在线做_java考试题目及答案也可以当面试题
  2. Tomcat【环境搭建 01】安装包版本说明+安装+参数配置+启动(JDK11+最新版apache-tomcat-10.0.12)
  3. boost的chrono模块特殊值的测试程序
  4. mysql性能优化:my.cnf配置文件
  5. UVA - 11437 Triangle Fun(简单几何)
  6. 通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!
  7. js两个小技巧【看到了就记录一下】
  8. oracle 12c sp2 0667,SP2-0667/SP2-0750错误
  9. 旷视开源了一套图像检索和ReID的PyTorch库
  10. RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
  11. 深度学习面试基础--BN层
  12. C语言习题二:比赛评分系统
  13. android 内存至少一半,极客修:为什么iPhone比安卓内存小,却更流畅?
  14. 三种梯度下降算法的比较和几种优化算法
  15. java实现验证邮箱有效性
  16. 地下城与勇士(DNF)天空之城副本(龙人之塔、人偶玄关、石巨人塔、黑暗玄廊、悬空城、城主宫殿)(童年的回忆)
  17. 【Kubernetes系列】Pod
  18. python抓取网页数据并截图_网络爬虫-使用Python抓取网页数据
  19. openmv扫码控制步进电机,模拟一种无接触式电梯
  20. 数字签名算法的原理与设计

热门文章

  1. 无线互动会议室方案的视频显示系统
  2. oracle判断字段是否包含某个字符串
  3. 狼人杀个人理解玩法之(守卫)
  4. Python二级考试知识点(史上最全)
  5. 计算机保研记:北京交通大学
  6. 【必收藏】2021全网最火全套IT编程语言百度网盘学习资源汇总 !!!
  7. 简述计算机主机硬件安装流程,怎么看电脑配置信息 看电脑配置的方法【图文步骤】...
  8. 计算机专业英语选词填空,专业英语考试+单词翻译+单项选择+选词填空+成成呕心沥血之作.doc...
  9. 安利一个最适合数据分析师的小众高薪兼职!
  10. 盘点不常用却很有用的代码 ,欢迎大家留言