It is based on how facebook.py libraries handle requests. Requests on Facebook all ultimately need URL encoding.
So breaking through the source facebook.py
api.fql({'example':"SELECT uid2 FROM friend WHERE uid1 = me()"})
ends as
queries%3D%7B%27example%27%3A+%27SELECT+uid2+FROM+friend+WHERE+uid1+%3D+me%28%29%27%7D
Which matches correctly as
queries={'example': 'SELECT uid2 FROM friend WHERE uid1 = me()'}
where as
api.fql({'example':u"SELECT uid2 FROM friend WHERE uid1 = me()"})
ends as
queries%3D%7B%27example%27%3A+u%27SELECT+uid2+FROM+friend+WHERE+uid1+%3D+me%28%29%27%7D
Please note that the processing of the u element for the unicode part was not performed before sending to urlencode in facebook.py library.
https://api.facebook.com does not respond to this, but if you did the same on the endpoint of graph.facebook.com, you will notice
(# 601) Analyzer error: unexpected '{' at position 0.
Basically, it pinches your request.
Try to deal with your Unicode before submitting for URL encoding
source share