I was just notified (crunch [bug 4560]) that Protocols.HTTP.http_encode_string doesn't work right for chars wider than 7 bits:
According to RFCs 3986 (URI) and 3987 (IRI), chars should be utf-8 encoded followed by the http %XX encoding. http_encode_string instead leaves 8-bit chars unencoded and uses that strange %uXXXX encoding for wider chars, a form that has no grounds in standards at all as far as I've been able to tell. (Must say I'm curious where it comes from. A comment says it's some kind of Safari encoding. My limited googling suggests that Safari at least nowadays uses the RFC method.)
The corresponding functions in Roxen have been corrected since 4.0. Encoding/decoding functions are always hazardous to change, so it's perhaps not an ideal time to do it right now. Otoh it would be rather nice to have correctly working functions in Pike instead of only in Roxen. So what do you say about changing it now?