Evapo-rust. I swear by this stuff. Completely non-toxic, non-corrosive and doesn't spoil paint at all. I've used it for years to restore tools, bring engine parts back from the dead, restore bike chains from years of rust and weather exposure, heck I almost always have something soaking in a tub in my shop.. I'm currently restoring a dozen or so bikes and treating every screw, nut & chain with the stuff.
A gallon is about $25 at Harbor Freight but it goes a long way, you can reuse it several times.
I usually start with a quick scrub, steel brush or brass if it's painted, then soak in Evapo-rust for 12-36 hours depending on corrosion. The only thing it hasn't de-rusted (out of hundreds of things) was a really weird rust ring fused to a titanium container I had (even weirder since titanium doesn't really rust... long story).
Anyway I have treated parts with paint, plastic components, rubber, etc. and it has never hurt anything. Just comes out shiny! After the evapo-rust I do a soak in some motor oil, clean and brush it off well and it's usually like new again.