I guess you'd have to ask Yahoo. The caret is part of a query.
Yahoo may require a caret in the parameter name, but they almost definitely accept it URI encoded (it's generally the web server's responsibility to unescape, not the web-app). ^ is %5E escaped, if you want to test manually.
Make sure to encode only the parameter names and values in the string, not the full URL to post to, since it will see :, /, and = as values that need to be escaped. E.g.
$ perl -MURI::Escape -e 'print uri_escape("http://example.com?^foo=bar")."\n";'
What you really want is something like:
$ perl -MURI::Escape -e 'print "http://example.com?".uri_escape("^foo")."=".uri_escape("bar")."\n";'
Needless to say, escaping the entire URL, or even just the full param string, will lead to problems.