Dan*_*eny 1 encoding dart uriencoding
我写了一些代码来用 C# 发布推文。绊倒我的一件事是数据的 url 编码,因为似乎有很多选择:
var input = "Hello Ladies + Gentlemen, a signed OAuth request!";
var expected = "Hello%20Ladies%20%2B%20Gentlemen%2C%20a%20signed%20OAuth%20request%21";
Console.WriteLine(WebUtility.UrlEncode(input) == expected); // False
Console.WriteLine(Uri.EscapeUriString(input) == expected); // False
Console.WriteLine(Uri.EscapeDataString(input) == expected); // True
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试在 Dart 中做同样的事情。我已经尝试了 Uri 类中的所有编码方法,但似乎没有一个输出相同。
代码:(飞镖板)
print(Uri.encodeQueryComponent("Hello Ladies + Gentlemen, a signed OAuth request!"));
print(Uri.encodeFull("Hello Ladies + Gentlemen, a signed OAuth request!"));
print(Uri.encodeComponent("Hello Ladies + Gentlemen, a signed OAuth request!"));
Run Code Online (Sandbox Code Playgroud)
输出:
Hello+Ladies+%2B+Gentlemen%2C+a+signed+OAuth+request%21
Hello%20Ladies%20+%20Gentlemen,%20a%20signed%20OAuth%20request!
Hello%20Ladies%20%2B%20Gentlemen%2C%20a%20signed%20OAuth%20request!
Run Code Online (Sandbox Code Playgroud)
最后一个 ( encodeComponent) 似乎最接近,只是感叹号是错误的。
是否有一种现有的方法可以按照我的要求进行这种编码(与 C# 的相同EscapeDataString)?
小智 5
我找不到与 C# 等效的 Dart 函数EscapeDataString,但是我认为我能够实现一个。随意尝试一下,看看你是否发现了任何问题。
请参阅此 Dartpad:https ://dartpad.dartlang.org/4336dad4dc0603952a7c2e545cb8726c
它基于 Dart 文档所说的事实:
All characters except uppercase and lowercase letters, digits and the characters -_.!~*'() are percent-encoded.
所以我提供的函数添加了这些特定字符的百分比编码。
正如我从 C# 文档中理解的EscapeDataString那样,默认情况下它确实对这些字符进行了编码,而我找不到任何 Dart 函数可以做到这一点。
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |