2015-07-06 3 views
2

Недавно я прошел через небольшую проблему с моим приложением, которое в основном загружает строку и изображение с моего сайта, теперь оно отлично работает в редакторе Unity, но когда я создаю и запускаю, он больше не печатает изображение! Вот важный кодEncoding.Default не работает в Unity Player

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() возвращает только изображение, а не строку, он отлично работает в сборке и в редакторе, большей степени, я попытался строки RET = Convert.ToBase64String (данные); но затем ret.Split(); возвращается

IndexOutOfRangeException: Индекс массива выходит за пределы допустимого диапазона.

Так что да, это в значительной степени, и я надеюсь, что у вас хороший день!

  • P.S: Мой сайт PHP и SendMessage() отлично работает

+0

Думаю, вам удастся использовать отладчик и посмотреть фактические данные, чтобы узнать, что в редакторе отличается от времени выполнения. В противном случае заявления печати должны быть достаточно хорошими, чтобы отлаживать это. Некоторые конкретные вещи: для 'Split' не имеет смысла бросать' IndexOutOfRangeException', вы имели в виду 'split [1]'? Кроме того, есть база данных64? Не имеет смысла использовать 'ToBase64String', если это действительно так. Вероятно, у вас просто нет данных base64, что объясняет, почему нет никаких символов '/' при попытке конвертировать! – 31eee384

+0

Да, мой плохой я имел в виду split [1] – Whiteclaws

ответ

1

Если это проблема кодирования в этом коде, смотрите на Encoding.Default.EncodingName в редакторе vs. во время выполнения. Это скажет вам, отличаются ли по умолчанию кодировки.

В качестве потенциального решения не используйте значение по умолчанию. Например, используйте Encoding.UTF8. Если вы узнаете, какую кодировку использует редактор Unity, вы можете использовать это.

+0

Он возвращает 1252, и я попробовал 1252, 1252 возвращает пустое изображение, когда я пытаюсь его подавать в tex.LoadImage() во время выполнения, пустое изображение не изображение ошибки, а пустое, по некоторым причинам, @ 31eee384, также, я пробовал кодировать php-данные в utf-8, но потом многие символы пропускают и изображение (png) уже недействительно, в психании, какую кодировку я должен использовать для кодирования мой образ? – Whiteclaws

0

Я исправил это, найдя кодировку данных, которые мой сайт прислал мне, используя echo mb_internal_encoding();, который является ISO-8859-1, а затем я создал Encoding ISO = Encoding.GetEncoding("ISO-8859-1"); и использовал это вместо Default, и он работал так же, как я хотел!

Смежные вопросы