2009-07-23 10 views
2

Ich habe eine Webanwendung, die Nachrichten an eine Amazon SQS-Warteschlange sendet. Amazon sqs lib gibt eine 'AmazonSQSException' aus, da die Nachricht ein ungültiges Binärzeichen enthielt. Die Nachricht ist der Referrer, der von einer eingehenden http-Anfrage erhalten wird. Dies ist, wie es aussieht:Amazon SQS ungültiges Binärzeichen im Nachrichtentext

http://ads.vrx.adbrite.com/adserver/display_iab_ads.php?sid=1220459&title_color=0000FF&text_color=000000&background_color=FFFFFF&border_color=CCCCCC&url_color=008000&newwin=0&zs=3330305f323530&width=300&height=250&url=http%3A%2F%2Funblockorkutproxy.com%2Fsearch.php%2FOi8vZG93%2FbmxvYWRz%2FLnppZGR1%2FLmNvbS9k%2Fb3dubG9h%2FZGZpbGUv%2FNTY5MTQ3%2FNi9NeUN1%2FdGVHaXJs%2FZnJpZW5k%2FWmFoaXJh%2FLndtdi5o%2FdG1s%2Fb0%2F>^FÃ'} úà < 99> A «) j

wie die Charaktere Sieht fett gedruckt die ungültigen Zeichen sind. Gibt es eine einfache Möglichkeit, Charaktere, die von Amazon nicht akzeptiert werden, herauszufiltern?

Here sind die Zeichen, die amazon im Nachrichtentext erlaubt. Ich bin nicht sicher, welche Regex ich verwenden sollte, um ungültige Zeichen durch ''

Antwort

1

zu ersetzen. Es hängt davon ab, welche Programmiersprache Sie verwenden. Zum Beispiel könnten Sie in mehreren Programmiersprachen die Amazon-Spezifikation, mit der Sie verlinkt sind, direkt in einen regulären Ausdruck übersetzen, der "ein oder mehrere Zeichen, die nicht in den zulässigen Bereichen sind" bedeutet.

Zum Beispiel Perl:

referer = ~ s/[^ \ x {9} \ x {A} \ x {D} \ x {20} - \ x {D7FF} \ x {E000 } - \ x {FFFD} \ x {10000} - \ x {10FFFF}] + // g;