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));
我在将 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));