读书人

cout为啥能处理汉字

发布时间: 2013-04-09 16:45:09 作者: rapoo

cout为何能处理汉字?
cout是ANSI版的,它处理字符串应该是以字节为单位的,而一个汉字占2个字节,cout竟然能正常输出汉字?

另:前段时间在c++代码里面把汉字直接打包成二进制数据,通过socket发给别人,然后别人问我用的是发来的消息用的是什么编码?我茫然了,说是ansi吧,但是发过去的汉字,别人输出是乱码,说是宽字节的吧,但程序中确实不是用宽字节来处理的。如果对方用的是c++,直接输出,倒也能正常显示,但人家用的是java,输出是乱码。

求大神指教。 c++ 汉字
[解决办法]
java默认用的是unicode, 而cout输出的文字,如果你在程序中转过码,那么你发的消息的编码就是你那个代码文件的编码。查看文件的编码,linux下可以使用file命令来看。使用iconv命令可以为你的文件转码。你试下把你的代码源文件转成utf-8的,重编译程序。然后再发给人家
[解决办法]
学习了。这个平时还真没注意,
[解决办法]

引用:
研究了一天,终于搞懂了。程序里面的字符串的编码方式是由操作系统当前代码页决定的,windows默认的代码页是936即GB2312,通过在cmd打chcp命令可查,linux下一般为UTF-8,响应命令为locale。
解释:
因为程序里面的常量字符串是存储在代码里面的,即一定存在于生成的可执行文件里面的某个地方,所以该字符串的编码方式取决于可执行文件的编码方式,而可执……
牛逼!

读书人网 >C++

热点推荐