在 C# 中接受来自 URL 的特殊字符作为输入
Posted
技术标签:
【中文标题】在 C# 中接受来自 URL 的特殊字符作为输入【英文标题】:Accepting special characters as input from the URL in C# 【发布时间】:2021-11-29 05:18:58 【问题描述】:使用语言:C#
输入:缩写或表情符号。
输出:缩写或表情符号的翻译
代码:
公共类 EmoticonController : ApiController // GET: api/表情/缩写/简写 [HttpGet] [Route("api/表情/缩写/shortform")]
public string Abbreviation(string ShortForm)
string outputMessage;
// Switch case that assigns the outputMessage the translation to the abbreviation entered by the user
switch (ShortForm)
case "TY":
outputMessage = "Thank you";
break;
case "(~.~)":
outputMessage = "sleepy";
break;
default:
outputMessage = "Invalid Input";
break;
return outputMessage;
我在Visual Studio中运行上面的代码,输入网址为
localhost/api/表情/缩写/(~.~)
我收到以下错误: C# URL Special characters error
PS:截图 URL 确实与我提到的代码不同。请忽略这一点。我修复了它,但错误仍然存在。
【问题讨论】:
在截图中请求的 url 不同 URI 中允许的字符是有限的。如果您需要使用特殊字符(如您所做的那样),您应该对它们进行编码。见***.com/questions/1856785/characters-allowed-in-a-url、***.com/questions/575440/url-encoding-using-c-sharp、***.com/questions/44920875/… 【参考方案1】:由于您有动作标题“...abbreviation/shortform”,因此您需要一个带有路由值的 MVC 样式 Url。这个 Url 对特殊字符非常敏感。您可以尝试对特殊字符进行编码/解码,但这并不总是成功的,有时甚至是不可能的。将查询字符串用作 URL 的一部分要容易得多。您可以通过将操作标题更改为此来实现它
[Route("~/api/emoticon/abbreviation")]
public string Abbreviation(string ShortForm)
然后你就可以使用这个网址了
localhost/api/emoticon/abbreviation?shortForm=(~.~)
【讨论】:
成功了,谢谢!您能否详细说明为什么 url 必须有一个?缩写后? 不客气!请不要忘记接受答案,因为它很有用。您可以通过单击我的答案侧的复选标记来完成。以上是关于在 C# 中接受来自 URL 的特殊字符作为输入的主要内容,如果未能解决你的问题,请参考以下文章
允许在 UITextfield ios 中使用德语 UMLAUT 字符