Texture2D 到 byte[] 到 String

Texture2D to byte[] to String

我在将 Texture2D 类型图像转换为字节然后再转换为字符串时遇到问题。当我执行以下操作时:

var myTextureBytes : byte[] = myTexture.EncodeToPNG();
Debug.Log(System.Text.Encoding.UTF8.GetString(myTextureBytes));

我刚得到 "�PNG" 的日志输出。为什么这么短?问号是什么? Unity 不应该能够解释 UTF-8 字符吗?此外,当我将其发送到我的 NodeJS 服务器时,它显示 SyntaxError: Unexpected token 并使服务器崩溃。

问题是纹理的 PNG 表示字节不是 UTF-8 编码的,它仅适用于文本。

要将二进制数据转换为字符串,我建议使用 base64 编码。

var myTextureBytes : byte[] = myTexture.EncodeToPNG();
var myTextureBytesEncodedAsBase64 : String = System.Convert.ToBase64String(myTextureBytes);

您尝试过使用 Default 编码吗?

Debug.Log(System.Text.Encoding.Default.GetString(myTextureBytes));