Encoding.Default在Unity Player中不起作用

时间:2015-07-06 22:17:49

标签: c# php encoding unity3d base64

我最近通过我的应用程序遇到了一个小问题,它基本上从我的网站上下载了一个字符串和一个图像,现在它在Unity编辑器中完美运行,但是当我构建并运行时,它并没有打印出来图像正常了!这是重要的代码

byte[] data = sendMessage("https://mywebsite.com", values);
string ret = Encoding.Default.GetString(data);
var split = ret.Split(new string[] {"//"}, StringSplitOptions.None);
byte[] texdata = Encoding.Default.GetBytes(split[1]);
varstr = split[0];

texdata用于tex.LoadImage();并且varstr会保存以供日后使用,现在当我在编辑器中时它完全可以正常运行但是在构建时,图像显示了一个大的? (png无效)并且varstr没有正确返回。我100%肯定它是编码,就像刚刚做的那样

byte[] data = sendMessage("https://mywebsite.com", values);
byte[] texdata = data;

sendMessage()只返回图像而不是字符串,它在构建和编辑器中完美运行,而且,我尝试过string ret = Convert.ToBase64String(data);但后来ret.Split();返回

  

IndexOutOfRangeException:数组索引超出范围。

所以是的,那就是它,我希望你过得愉快!

  • P.S:我的网站是php,sendMessage()工作正常

2 个答案:

答案 0 :(得分:1)

如果它是该代码中的编码问题,请在编辑器中查看Encoding.Default.EncodingName与运行时期间的对比。这将告诉您默认编码是否不同。

作为一种潜在的解决方案,请勿使用默认设置。例如,使用Encoding.UTF8。如果您发现Unity编辑器正在使用哪种编码,您可以使用它。

答案 1 :(得分:0)

我通过查找我的网站使用echo mb_internal_encoding();发送给我的数据的编码来修复它,Encoding ISO = Encoding.GetEncoding("ISO-8859-1");是ISO-8859-1,然后我创建了DefaultMutableTreeNode并使用它而不是默认它并且它工作了就像我想要的那样!