UE 使用自带的FBase64支持UTF8中文编码与解码
发现UE自带的FBase64不能直接解码中文字符也就是不支持UTF8编码
只需将编码时的FString进行编码,然后解码的时候从UTF8转为TCHAR
#include "Misc/Base64.h"
FString UEncodeLib::FBase64Encode(FString Data)
{
TArray<uint8> ByteArray;
FTCHARToUTF8 StringSrc = FTCHARToUTF8(Data.GetCharArray().GetData());
ByteArray.Append((uint8*)StringSrc.Get(), StringSrc.Length());
return FBase64::Encode(ByteArray);
}
FString UEncodeLib::FBase64Decode(FString Data,bool& Success)
{
FString Dest;
TArray<uint8> ByteArray;
Success = FBase64::Decode(Data, ByteArray);
FUTF8ToTCHAR StringSrc = FUTF8ToTCHAR((const ANSICHAR*)ByteArray.GetData(), ByteArray.Num());
Dest.AppendChars(StringSrc.Get(), StringSrc.Length() + 1);
return Dest;
}