windows与OS X下的std::string

编码方式简单分类:

         ANSI

         Unicode

         UTF-8

工具:

         Notepad++

         UltraEdit

在Notepad++中输入“严”字,在UltraEdit中用二进制方式查看严的二进制保存:

ANSI编码格式:D1  CF         

    (D1  CF是GB2312字符集中”严”的编码)

UTF-8编码格式:EF      BB    BF     E4     B8    A5

         (EF BB BF显示表示文件是UTF-8编码)

UCS-2 Big Endian:FE      FF     4E     25

UCS-2 Little Endian: FF     FE     25     4E

         (FEFF:Unicode规范定义的显示表示文本的存储方式)

std::string 使用char

std::wstring使用wchar_t

在VS2008中测试:

   std::string astr = "严";

   char astr1[10] = "严";

   std::wstring wstr = L"严";

   wchar_t wstr1[10] = L"严";

结果如图:

  

与IDE->Project->Configuration Properties->General->CharacterSet设置为Multi-Byte/Unicode无关…

Xcode测试:

windows:

 char 或者 std::string使用ANSI编码,字符集是系统自动选择的本地字符集,GB2312.

 wchar_t 或者std::wstring使用Unicode字符集.

OS X 10.8.2:

 char 使用的是UTF-8编码

 //wchar_t从程序运行结果反映是Unicdoe…Xcode断点竟然无法查看内存值?

跨平台:

         跨平台工程中std::wstring ->std::string转换需要进行不同设置,比如从打开文件夹窗口获取的文件路径。

参考:

         http://www.doc88.com/p-993979784139.html

  百度Unicode,有个“汉字转Unicode”的小工具,可以查看汉字的Unicode编码



-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ezhong的博客签名-------------------------------------

以上内容来自ezhong的博客园,作者:ezhong

ezhong的博客园: http://www.cnblogs.com/ezhong

感谢您的阅读。感谢您的分享。

原文地址:https://www.cnblogs.com/ezhong/p/2811396.html