socket中文乱码(C# SOCKET程序,中文乱码情况)

本文目录
- C# SOCKET程序,中文乱码情况
- socket网络编程中,从c++的服务端发送一段中文到c#的客户端,为什么接收的中文乱码了
- Socket的Java Client ,C Server 传输数据中文乱码
- 请教socket传送中文乱码,只要加入转义字符
- linux用java socket与c的socket通信乱码问题
- C++ socket 发送类成员为乱码,求大神指导,
- 求助:PC与android模拟器socket通讯,中文显示为乱码的问题
C# SOCKET程序,中文乱码情况
你重复这两句是什么目的?
bytes = newSocket.Receive(recByteMsg, recByteMsg.Length, 0);
recMsg = Encoding.GetEncoding(“GB2312“).GetString(recByteMsg, 0, bytes);
bytes = newSocket.Receive(recByteMsg, recByteMsg.Length, 0);
recMsg = Encoding.GetEncoding(“GB2312“).GetString(recByteMsg, 0, bytes);
如果你采用阻塞模式无须重复这样写啊,当然阻塞模式可能出现粘包问题
我们一般采用发送端设置边界标示,根据标示在接受端来区分上下包,这和IP包的包头标志是一样的道理。如果你发送的字符长度是固定的那么也可以不需要设置边界标志了。
socket网络编程中,从c++的服务端发送一段中文到c#的客户端,为什么接收的中文乱码了
#include 《iostream》
#include 《cstring》
#include 《windows.h》
std::string GBKToUTF8(const std::string& strGBK)
{
std::string strOutUTF8 = ““;
WCHAR * str1;
int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);
str1 = new WCHAR[n];
MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n);
n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
char * str2 = new char[n];
WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);
strOutUTF8 = str2;
deletestr1;
str1 = NULL;
deletestr2;
str2 = NULL;
return strOutUTF8;
}
std::string UTF8ToGBK(const std::string& strUTF8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);
WCHAR * wszGBK = new WCHAR[len + 1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUTF8.c_str(), -1, wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK = new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGBK, len, NULL, NULL);
//strUTF8 = szGBK;
std::string strTemp(szGBK);
deleteszGBK;
deletewszGBK;
return strTemp;
}
不知道你原始的编码是什么,要转成什么
Socket的Java Client ,C Server 传输数据中文乱码
java是unicode编码。一个字符是2位,十六个字节,c在本地的话,他会用本地的默认字符集,也就是gb2312或者gbk编码,这个编码是浮动的,8个或者12个,2着字符不兼容呀,解决就不知道了,我一般都是在client和server都用java的
请教socket传送中文乱码,只要加入转义字符
socket服务端和客户端编码方式不一致将有可出现中文乱码问题,因此两边设成一样的就可以了
socket服务端发送数据时设置编码方式
PrintWriter output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),“UTF-8“),true);
output.println(“你好“);
客户端接收数据时设置编码方式:
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(),“UTF-8“));
System.out.println(input.readLine());
linux用java socket与c的socket通信乱码问题
应该就是字符集问题。
首先要确定Linux返回的数据中,采用了那种编码方式,如:GBK。
对应的,在Java一端,将字符串信息转换成byte数组并写入Socket,读出的数据也转换成字符串,
如:
String s = “中文“ ;
sockoutputstream.write (s.getBytes (“GBK“)) ;
读出来时候,
byte buf = sockinputStream.read ()
String s = new String (buf, “GBK“) ;
这样就可以了。
C++ socket 发送类成员为乱码,求大神指导,
有几个问题:
第一,sizeof不是这么用的,sizeof()是计算数据类型的大小比如sizeof(CSendPackage );计算字符串的大小应该用strlen()这类的函数。
第二,CSendPackage 的有些数据成员是不能发送的,这点可以看看类的拷贝构造函数。
简单说下,当一个类里有动态数组时,想复制这个类就不能简单的 用 赋值等号(=),当然
memcpy(&pkg.subs,&subs,sizeof(subs));这是更加不行的。
subs.m_SubsID=“123456“;这句可以知道.m_SubsID是一个string或者Cstring类型,这种类型里面是用动态数组存储字符串数据的,比如Cstring只占四字节,里面有个指向字符串的指针,你发送
pkg时不会发送pkg中所有指针所指向的数据。
求助:PC与android模拟器socket通讯,中文显示为乱码的问题
读取:
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),“GBK“));
发送:
OutputStream out = socket.getOutputStream();
out.write(head.getBytes(“GBK“));

本文相关文章:
dht11温湿度传感器程序(急求用stc12c5a60s2单片机显示dht11温湿度传感器程序,基本的读取和时序程序就行)
2026年10月3日 22:30
win32应用程序(电脑显示不是有效的win32应用程序怎么办)
2026年10月1日 10:00
mapreduce过程(MapReduce程序在运行过程中所启动的Reduce任务数量由什么因素决定)
2026年9月17日 17:20
linux下socket编程(在Linux系统下编写一个socket程序)
2026年7月2日 18:50
visual studio新手教程(如何使用 Visual Studio.Net 编译和执行 C# 程序,步骤是)
2026年6月29日 15:10
更多文章:
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00


![[C语言] 运行C程序的步骤?c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包括三个成](/static/images/nopic/1.jpg)

