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

fb.com/mySocialWebDevBlog
@Simon_A_Frank
Vielen Dank an den Hinweis von Christian – in dem VB-Codebeispiel war ein Tippfehler, den ich nun behoben habe!