接1,同样的问题,还是uint8_t* toFString
只不过这次不是直接用,而是需要将数据保存到一个变量中。
PC端用下面的方法打印log,一切正常,Android端打印的时候,纯英文/纯中文都没问题,中英文结合就不行,会在正确的结果后面加上一堆别的结果,有时是乱码。
UE_LOG(LogTemp, Warning, TEXT("%-12d %-10.*s %-16.*s %-16.*s\n"), ref->nodeId.nodeId.namespaceIndex,
(int)ref->nodeId.nodeId.identifier.string.length, UTF8_TO_TCHAR(ref->nodeId.nodeId.identifier.string.data),
(int)ref->browseName.name.length, UTF8_TO_TCHAR(ref->browseName.name.data),
(int)ref->displayName.text.length, UTF8_TO_TCHAR(ref->displayName.text.data));
用变量保存如下:
FString FStrDisplayName;
FStrDisplayName.AppendChars(UTF8_TO_TCHAR(ref->displayName.text.data),(int)ref->displayName.text.length);
同样,纯英文/纯中文都没问题,中英文结合就不行。
尝试了2天的时间,考虑到了编解码问题也没解决掉。
最终发现是UTF8_TO