UE4 在socket中传输中文数据时错误

socket默认使用utf8格式传输数据,如果传输的是中文的话,那么1个中文占用3个字节,发送的个数就需要针对性就行修改,不能简单的使用FString::Len()进行个数计算,这里给出一个计算个数的函数,

int32 CalcUtf8NumFromString(const FString & Str)
{
	int32 result = 0;
	
	
	for (int i = 0; i < Str.Len(); i++)
	{
		
		if (Str[i] <= 0x7f)
			result = result + 1;
		else if (Str[i] > 0x7f && Str[i] <= 0x07ff)
			result = result + 2;
		else if (Str[i] > 0x07ff && Str[i] <= 0xffff)
			result = result + 3;
		else
			result = result + 4;
	}

	return result + 1;
}

你可能感兴趣的:(UE4学习)