C++ std::string 存储中文,显示乱码


用C++中的std::string类 来接收 网页上PHP传过来的几个中文字符,string中的内容变成了乱码,不能正确显示中文。
PHP传输时用的编码格式为utf8,我怀疑这跟C++中string存储中文时的编码格式不匹配有关系。
但是从网上找关于“C++ string 存储中文用的编码格式”也没有找到相关的信息。
编写C++代码用的IDE是VS2008,Unicode字符集。

到底怎么才能让C++中的std::string正确显示中文字符,或者换一种其它类型来解决这个问题呢?
实在找不到答案,特来此请教各位大牛

编码 C++

GcYui 11 years ago

utf-8的编码,有1个字节,有两个字节的(大多数中文),也有三个字节的(少部分其他国家字符),因此你传输过来利用std::string保存,其实内部是正确的,但是你将utf-8当成gb2312解释就错了,因此收到utf-8的时候转成GBK即可。百度搜索下utf-8转gbk,可以找到一大堆方法。

或者在php页面上打开支持gbk编码,上送过来的数据就直接是gbk了,这样就可以了。

std::string存储的是单字节字符,编代码的时候一般是将中文字变成2个字节的gb2312然后存储到std::string里面,比如:std::string s = "abcd你好"; 长度是8个字节,你s.length下就知道了。

我要剥你的壳 answered 11 years ago

Your Answer