Ich war da gestern mal wieder ausnahmsweise am programmieren, ich hatte die Idee, für diesen Blog so eine Art Tag-Cloud der Suchbegriffe zu bilden, über die die lieben Besucher via Google zu mir kommen.
So weit ganz einfach, Google übergibt ja brav die Parameter an meinen Server, die ich dann nur noch parsen muß.
Ging auch ganz schnell, bis ich die ersten kryptischen Sonderzeichen zu sehen bekam. Sonderzeichen, die nicht utf8 codiert waren.
Also ging die Sucherei wieder los, denn jedes Sonderzeichen per Regex auszutauschen wäre ja Blödsinn (ganz zu schweigen von der verbratenen Rechenzeit).
Da ich nicht so der Modul-Benutzer bin, hatte ich dann natürlich auch nicht gleich das passende Modul parat und mußte suchen gehen...
Gefunden hab ich dann folgendes:
use URI::Escape; my $sw = uri_unescape( $sw );
$sw=~ tr/+/ /;
use Encode;
Encode::_utf8_on($sw);
In $sw stehen übrigens die Suchwörter, die von Google kommen.
Wie geht`s?
Also, per uri_escape werden Zeichenfolgen wie %C3%A4 zum Beispiel in ein kryptisches ä umgewandelt, per Encode::_utf8_on($sw) wird dieses kryptische ä dann in ein echtes ä verwandelt. Sorry übrigens für den Ausdruck kryptisches ä, aber dieses Sonderzeichen wollte ich gerade nicht raussuchen...
Nun hab ich also meine Suchwort-Cloud, wer will kann ja unten mal gucken, was so gesucht wurde...