UE4 在socket中傳輸中文資料時錯誤

鴻蒙老道發表於2020-09-24

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;
}

相關文章