[eluser]codex[/eluser]
It might be because of the htaccess (don't know much about them). Here's what it looks like:
#RewriteEngine on
#RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
And the URL will accept cat%20dog, but not cat@dog... (%20 = space, @ = @)
Edit: Hmm, if you look at the code above, @should look like % 40 (without space), but it gets converted. Could that be the trouble?