解决从Windows使用socket传输中文字符串,Linux下显示乱码问题

本文探讨了在Windows客户端通过socket发送包含中文的请求包到Linux服务器时出现乱码的问题。问题源于Windows的GBK编码和Linux的UTF-8编码不一致。文章提供了解决方案,确保中文字符串在传输过程中正确显示。
摘要由CSDN通过智能技术生成

前言

由于最近在做一个项目,需要从Windows客户端发送给一个请求包给Linux服务器,请求一张图片,当然如果这张图片是英文的,那没有什么问题,我前面一篇博客已经详细解说,如果实现Windows与Linux之间图片传输问题,博文地址:Windows与Linux图片传输,但是,如果这张图片的名字是中文呢?中文乱码肯定是编码问题,windows下是gbk编码,而Linux下默认是utf-8编码,我要实现的就是,客户端发送请求包,请求包里面的是一张图片的名字(中文),然后服务器找到这个文件,将他发送给客户端,并显示。
核心代码如下

#include <string.h>  
#include <fstream>  
#include <windows.h> 
#include <atlstr.h>
#include <atlbase.h>
#include<tchar.h>

//GBK转UTF-8
void GBKToUTF8(CString &strAscii)
{
   
 string s, s2;
 std::string strGBK;
 strGBK = strAscii.GetBuffer(0);
 string strOutUTF8 = "";
 WCHAR * str1;
 int n = MultiByteToWideChar(CP_ACP, 0, strGBK.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值