c++ 网络编程如何向指定的fd中 写中文

通常情况下,网络编程的i/o处理,使用的函数有
ssize_t read(int fd, void *buf, size_t nbyte)
ssize_t write(int fd, const void *buf, size_t nbytes)
按字节一个个的进行传输。

但是通常情况下,中文的一个字占2~3个字节,这样的话可能在传输的过程中,出现乱码的情况。

所以想要请教一下,这种问题应该如何解决呢?

阅读 2.3k
2 个回答

首先,tcp保证了传输中的顺序递交和数据正确性的问题,所以不可能导致数据错误。

应该是你服务端和客户端解码问题
我猜你是linux上为服务端,win上为客户端遇到的这样的问题。
你可以通过
linux

win
这两个命令行来查看编码是否一致。
另外你还要注意大小端的问题。

又不是一个个字节分开的传,是连续的。。一次就是传输你给的字节数。。所以不会出现你说的一个中文3个字节分开传输。。。显示的时候要注意编码,两边的编码要一致,不然也是乱码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题