2016-07-22 3 views
0

I wrote some code으로 C#의 트윗을 게시하십시오. 지금 다트에 같은 일을 할 노력하고있어Dart에서 Twitter API가 예상하는 형식으로 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 

: 많은 옵션이있을 것 같았다 때문에 나를 넘어 것들 중 하나는 데이터의 URL 인코딩이었다. Uri 클래스에서 모든 인코딩 메소드를 시도했지만 아무 것도 출력하지 않는 것 같습니다.

코드 : (DartPad)

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!")); 

출력 :

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! 

마지막 하나 (encodeComponent)는 단지 느낌표가 잘못, 가장 가까운 것 같다.

필요에 따라이 인코딩을 수행하는 기존 방법이 있습니까 (C#의 EscapeDataString과 동일)?

답변

1

convert package은 완벽하게 작동합니다. 이전에 숫자가 인코딩되지만 버그 번호는 a fix was merged이고 오늘 2.0.1에서 발표되었습니다.

3

C#의 EscapeDataString과 동일한 다트 함수를 찾을 수 없지만 구현할 수 있다고 생각합니다. 언제든지 시도해보고 문제가 있는지 확인하십시오. 다트 워드 프로세서 말한다는 사실을 기반으로 https://dartpad.dartlang.org/4336dad4dc0603952a7c2e545cb8726c

: 내가 제공

All characters except uppercase and lowercase letters, digits and the characters -_.!~*'() are percent-encoded.

그래서 기능이 그 특정 문자 %의 인코딩을 추가

이 Dartpad 참조하십시오.

EscapeDataString의 C# 문서에서 알 수 있듯이 기본적으로 이러한 문자를 인코딩하지만 Dart 기능을 사용하면 찾을 수 없습니다.

+0

감사합니다. 비록 내가 내장 된 버전이 없다는 것에 정말로 놀랐지 만. 누군가는 변환 패키지에서 나를 가리켰다. 숫자가 실패한 것을 제외하면 더 가깝다. https://github.com/dart-lang/convert/issues/3 –

관련 문제