Clearly % needs to be encoded. The wikipedia article on the standard says:
Because the percent ("%") character serves as the indicator for percent-encoded octets, it must be percent-encoded as "%25" for that octet to be used as data within a URI.
Why isn't it also listed as a reserved character? Clearly it is reserved to signify something special in the context of a URI...