Size: a a a

Xamarin Developers

2021 January 20

MA

Makc Artemiev in Xamarin Developers
Хотя мб я ошибаюсь
источник

MA

Makc Artemiev in Xamarin Developers
Но попробуй) мало ли
источник

АА

Алексеев Александр... in Xamarin Developers
Дмитрий Лукин
Всем привет, подскажите, как можно строку вида
Data = "{\"Name\":\"\\u0431\\u0443\\u0433\\u0430\\u0433\\u0430\\u0032\"}";

Привести к нормальной UTF-16 строке?
Грубо говоря, чтобы при выводе Console.write(Data) выводилось «{"Name":"бугага2"}»

Все перепробовал, но так и не смог решить, через байтовые массивы не работает, так как символы \u заменяются на отдельный символ, а не как часть UTF записи
Тут посмотри при декоде они так же остаются поэтому их надо чистить
https://2cyr.com/decode/?lang=ru
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Хорошо, а как их чистить? Я вот этого понять не могу...

Заменять \\u на u бесмысленно...
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Makc Artemiev
Попробуй json encode просто сделать
Не поможет
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
По идее нужно как-то в массив байт перегнать, игнорируя эти символы и затем уже его в строку, но вот с перегоном в массив байт проблема
источник

АА

Алексеев Александр... in Xamarin Developers
Дмитрий Лукин
Хорошо, а как их чистить? Я вот этого понять не могу...

Заменять \\u на u бесмысленно...
Я же прислал пример
источник

АА

Алексеев Александр... in Xamarin Developers
Дмитрий Лукин
По идее нужно как-то в массив байт перегнать, игнорируя эти символы и затем уже его в строку, но вот с перегоном в массив байт проблема
По идее надо чтобы бэк отдавал нормально данные)
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Алексеев Александр
По идее надо чтобы бэк отдавал нормально данные)
Я понимаю :) но вот что есть, как раз и задача строку на стороне аппа поправить
источник

АА

Алексеев Александр... in Xamarin Developers
json.Replace(@"\u", "");
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Тоже не вариант, так как строка будет восприниматься как будто без спецсимвола для UTF-16 и не сконвертится
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Тем не менее, с решением разобрался, для меня оно следующее:
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
POSTData = "{\"Name\":\"\\u0431\\u0443\\u0433\\u0430\\u0433\\u0430\\u0032\"}";

               var UIndex = POSTData.IndexOf("\\u");
               while (UIndex > -1)
               {
                   if (UIndex + 6 < POSTData.Length)
                   {
                       try
                       {
                           string UTFPart = POSTData.Substring(UIndex + 2, 4);

                           byte[] Bytes = BitConverter.GetBytes(UInt16.Parse(UTFPart, System.Globalization.NumberStyles.HexNumber));

                           POSTData = POSTData.Remove(UIndex, 6);
                           POSTData = POSTData.Insert(UIndex, Encoding.Unicode.GetString(Bytes));

                           UIndex = POSTData.IndexOf("\\u");
                       }
                       catch { UIndex = 0; }
                   }
                   else
                       UIndex = 0;
               }

               Console.WriteLine(POSTData);
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Возможно кому-то пригодится, и спасибо всем откликнувшимся
источник

VC

Vitaly Chernyaev in Xamarin Developers
Дмитрий Лукин
POSTData = "{\"Name\":\"\\u0431\\u0443\\u0433\\u0430\\u0433\\u0430\\u0032\"}";

               var UIndex = POSTData.IndexOf("\\u");
               while (UIndex > -1)
               {
                   if (UIndex + 6 < POSTData.Length)
                   {
                       try
                       {
                           string UTFPart = POSTData.Substring(UIndex + 2, 4);

                           byte[] Bytes = BitConverter.GetBytes(UInt16.Parse(UTFPart, System.Globalization.NumberStyles.HexNumber));

                           POSTData = POSTData.Remove(UIndex, 6);
                           POSTData = POSTData.Insert(UIndex, Encoding.Unicode.GetString(Bytes));

                           UIndex = POSTData.IndexOf("\\u");
                       }
                       catch { UIndex = 0; }
                   }
                   else
                       UIndex = 0;
               }

               Console.WriteLine(POSTData);
а Regex.Unescape(POSTData) - не проще?
источник

М

Микаил in Xamarin Developers
У меня такие символы были при копировании одного файла json в другой. И потом новый файл когда я уже пытался десериализовать, то вышли символы на кирилице.
Просто использовать encoding, и все нормализовалось
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Vitaly Chernyaev
а Regex.Unescape(POSTData) - не проще?
Вариант, кстати, попробую, спасибо
Такая портянка как у меня не выглядит красивым решением
источник

ДЛ

Дмитрий Лукин... in Xamarin Developers
Vitaly Chernyaev
а Regex.Unescape(POSTData) - не проще?
👍🤝 Отлично работает
источник

VC

Vitaly Chernyaev in Xamarin Developers
Дмитрий Лукин
👍🤝 Отлично работает
ну и супер)
источник

КЛ

Коля Лащ in Xamarin Developers
Java.IO.IOException: Cleartext HTTP traffic to someserver.dtempurl.com not permitted...

Привет ребят. Столкнулся я с такой проблемой. Когда я использую Гет запрос, то выбивает такой ексепшн в Xamarin.Forms. Но если я использую этот запрос в консольном проекте, то всё работает хорошо. С чем это может быть связано и как это исправить?
источник