Nahezu alle aktuellen Social Networks nutzen inzwischen OAuth zur Authentifizierung. In diversen Blogposts habe ich dies schon genauer für Twitter, Facebook & Co beschrieben. Ein bekanntes Problem ist die richtige Darstellung der Leer- und Sonderzeichen sowie der deutschen Umlaute. Hier eine Zusammenstellung der Lösungen (Details können in den einzelnen Beiträgen nachgelesen werden):
PHP: rawurlencode+utf8_encode ist die Lösung:
$params=rawurlencode(utf8_encode("Hallöchen Simon wie geht's?"));
C#: Hier sind es einige Zeilen, die Idee ist von Andre Arnott, Details siehe hier
string[] UriRfc3986CharsToEscape = new[] { "!", "*", "'", "(", ")" }; StringBuilder escaped = new StringBuilder(Uri.EscapeDataString( txtTweet.Text.ToString())); for (int i = 0; i < UriRfc3986CharsToEscape.Length; i++) { escaped.Replace(UriRfc3986CharsToEscape[i], Uri.HexEscape(UriRfc3986CharsToEscape[i][0])); } Parameters = "&text=" + escaped.ToString();
VB/Visual Basic: wie in C# (vgl. oben)
Dim UriRfc3986CharsToEscape() As String = _ {"!", "*", "'", "(", ")"} Dim escaped As New _ StringBuilder(Uri.EscapeDataString(txtTweet.Text.ToString())) For i As Integer = 0 To UriRfc3986CharsToEscape.Length - 1 escaped.Replace(UriRfc3986CharsToEscape(i), _ Uri.HexEscape(UriRfc3986CharsToEscape(i)(0))) Next i Parameters = "&text=" & escaped.ToString()
Perl: Hier ist ein decode_utf8 oder decode ausreichend, z. B. bei Net::OAuth
extra_params => { text => decode_utf8($nachricht) #Alternative (je nach Quelle besser) #text => decode("iso-8859-1",$nachricht); }
P.S.
Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne – einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstmöglich. Unternehmen, die Unterstützung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management benötigen finden zudem entsprechende Angebote meiner Firma auf der Website www.Frank-IT-Beratung.de
Vielen Dank an den Hinweis von Christian – in dem VB-Codebeispiel war ein Tippfehler, den ich nun behoben habe!