持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天, 点击查看活动详情

TCP协议的全称叫做传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。

对于我们C++开发人员来说,应该都不陌生吧!尤其是涉及到局域网功能时,很多时候采用TCP以及UDP的情况比较多。

今天我就来谈一谈在TCP通讯中编码问题吧!

刚刚接触TCP的新手们,多数情况下,都会遇到这样的问题:

1:为什么我的数据有些时候是乱码?有些时候能正常显示?

2:与其他平台进行通讯时为什么中文总是乱码?

3:通讯时即使做了编码转换也照样是乱码?

以上这两个问题是我们很普遍遇到的。

其实第一个问题:有些情况下是乱码,有些情况下能正常显示。很多人觉得都不可能,怎么还会分情况?高兴了就正常显示,不高兴了就乱码吗?

说起这个问题来,我也是在修改别人代码时才发现这个问题的。

原因 两个通讯端都是C++写的PC端,并且需要在同一台电脑上运行,所以,在通讯过程中并没有进行字符串编码问题转换。当我升级软件后,按照我以往的通讯处理方式,对所有的从TCP通讯中接收的字符串全部进行了utf-8编码格式转换。这就出现了第一个问题,有些时候是乱码,有的时候是正常显示了。

刚开始未进行软件升级时不出现乱码问题问题,是因为:两个软件都是运行在同一台主机上,内部走的是127.0.0.1,都来不及经过网络。

当我升级后,不再一台电脑上使用后,就将字符串全部做了编码转换,此时就会出现问题,为什么通讯时即使做了编码转换还是有乱码存在了。

UTF-8编码是一种国际性编码,一种可变长的编码格式。在通讯过程中使用该编码为了防止中文乱码的问题。一般在文件保存或者网络传输的时候都会将unicode编码格式转成utf-8编码方式。

为了防止通讯中出现乱码问题,最保险的做法就是只要做字符串传输时,一律采用utf-8的编码格式,这样也能很好的跨平台通讯!

我是中国好公民st,一名C++开发程序猿~