Xamarin Forms: вставленный тест содержит символ + вместо пробела - PullRequest
0 голосов
/ 27 марта 2019

В прошлом году я задал вопрос о копировании значения записи в формах xamarin.

Когда я проверял это сейчас, пробелы в тексте заполнены символом +. Также при вставке смайликов он не работает должным образом.

enter image description here

Я использую Xamarin.Plugins.Clipboard Пакет NuGet для копирования текста в буфер обмена. При копировании текста в буфер обмена я использую следующий код:

 CrossClipboard.Current.SetText(message);

При длительном нажатии на устройстве отображается опция вставки. Я использую эту опцию для вставки скопированного текста.

Пожалуйста, предложите решение, как избежать символа +? Также для эмодзи копировальной пасты.

Заранее спасибо.

1 Ответ

4 голосов
/ 27 марта 2019

Задача должна быть WebUtility.UrlDecode (String) текст:

Преобразует строку, которая была закодирована для передачи в URL, в декодированную строку.

Если такие символы, как пробелы и знаки препинания, передаются в потоке HTTP, они могут быть неправильно истолкованы на принимающей стороне. Кодировка URL преобразует символы, которые не разрешены в URL, в эквивалентные шестнадцатеричные escape-последовательности. Метод UrlEncode создает строку в кодировке URL.

Декодирование URL заменяет шестнадцатеричные escape-последовательности соответствующими символами ASCII. Например, при внедрении в блок текста в кодировке URL escape-последовательности %3c и %3e декодируются в символы < и >.

Образец следующим образом:

using System.Net;    

Console.WriteLine("Encode:" + WebUtility.UrlEncode("?"));
// out ==> %F0%9F%98%82

Console.WriteLine("Decode:" + WebUtility.UrlDecode("%F0%9F%98%82"));
// out ==> ?

Console.WriteLine("Encode:" + WebUtility.UrlEncode("this is a text message"));
// out ==> this+is+a+text+message

Console.WriteLine("Decode:" + WebUtility.UrlDecode("this+is+a+text+message"));
// out ==> this is a text message

Решение:

Не напрямую CrossClipboard.Current.SetText(message);

Попробуйте с CrossClipboard.Current.SetText( WebUtility.UrlDecode(message));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...