Xamarin Forms:粘贴的测试包含 + 符号而不是白色 space

Xamarin Forms: Pasted test contains + symbol instead of white space

去年我问了一个 关于在 xamarin 表单中复制条目值的问题。

当我现在测试它时,文本中的空白由 + 符号填充。粘贴表情符号时也无法正常工作。

我正在使用 Xamarin.Plugins.Clipboard NuGet 包将文本复制到剪贴板。将文本复制到剪贴板时,我使用以下代码:

 CrossClipboard.Current.SetText(message);

在设备中长按时会显示粘贴选项。我正在使用该选项粘贴复制的文本。

请提出避免 + 符号的解决方案?也适用于表情符号复制粘贴。

提前致谢。

问题应该需要WebUtility.UrlDecode(String)正文:

Converts a string that has been encoded for transmission in a URL into a decoded string.

如果在 HTTP 流中传递空格和标点符号等字符,它们可能会在接收端被误解。 URL 编码将 URL 中不允许的字符转换为等效的十六进制转义序列。 UrlEncode 方法创建一个 URL 编码的字符串。

URL 解码将十六进制转义序列替换为相应的 ASCII 字符等效项。例如,当嵌入到 URL 编码的文本块中时,转义序列 %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));