gpt4 book ai didi

c# - 将 "ä"编码为 "%E4"

转载 作者:太空狗 更新时间:2023-10-29 23:14:59 25 4
gpt4 key购买 nike

我正在尝试了解什么是满足新 SMS 提供程序要求的最佳 C# 编码。

我要发送的文本是:

Bäste Björn

提供者说它需要的编码文本是:

B%E4ste+Bj%F6rn

所以 ä%E4ö%F6


From this answer ,我明白了,对于这种转换,我需要使用 HttpUtility.HtmlAttributeEncode 作为正常的 HttpUtility.UrlEncode 将输出:

B%c3%a4ste+Bj%c3%b6rn

然后在手机上输出奇怪的字符:/

因为几个字符没有被转换,我试过这个:

private string specialEncoding(string text)
{
StringBuilder r = new StringBuilder();
foreach (char c in text.ToCharArray())
{
string e = System.Web.HttpUtility.UrlEncode(c.ToString());
if (e.StartsWith("%") && e.ToLower() != "%0a") // %0a == Linefeed
{
string attr = System.Web.HttpUtility.HtmlAttributeEncode(c.ToString());
r.Append(attr);
}
else
{
r.Append(e);
}

}
return r.ToString();
}

详细 所以我可以断点并测试每个字符,并发现:

System.Web.HttpUtility.HtmlAttributeEncode("ä") 实际上等于ä...所以没有%E4作为输出...

我错过了什么是否有一种简单的方法来进行编码,而无需逐个字符地操作它们并获得所需的输出?

最佳答案

that the provider say it needs

询问提供者他们现在的年龄。根据Wikipedia: Percent-encoding :

The generic URI syntax mandates that new URI schemes that provide for the representation of character data in a URI must, in effect, represent characters from the unreserved set without translation, and should convert all other characters to bytes according to UTF-8, and then percent-encode those values. This requirement was introduced in January 2005 with the publication of RFC 3986. URI schemes introduced before this date are not affected.

当然,这个 RFC 讨论的是“新的 URI 方案”,而 HTTP 显然不是,但是遵守这个标准可以防止这样的麻烦。另见 What is the proper way to URL encode Unicode characters? .

他们似乎希望您根据 Windows-1250 Code Page 对字符进行编码(或类似的,如 ISO-8859-1 或 -2,检查替代品 here ),因为使用该代码页 E4 (132) 映射到 ä 和 F6 (148) 映射到 ö。作为@Simon在他的评论中指出,您应该询问提供商他们希望您使用哪个代码页。

假设Windows-1250,你可以这样实现,根据URL encode ASCII/UTF16 characters :

var windows1250 = Encoding.GetEncoding(1250);
var percentEncoded = HttpUtility.UrlEncode("Bäste Björn", windows1250);

percentEncoded 的值为:

B%e4ste+Bj%f6rn

如果他们坚持使用大写字母,请参阅 .net UrlEncode - lowercase problem .

关于c# - 将 "ä"编码为 "%E4",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com