John Walker (of autocad fame) wrote a perl script to regsub things like smart quotes. His script has since been modified by a few others (search for demoroniser on google). His original script along with a good summary of what the problem is can be found at
http://www.fourmilab.ch/webtools/demoroniser/. If OACS doesn't already have something to do this, it might be worth adapting this code.
I also have been unable to find a satisfactory solution, and the brute force regexp method is a hack. Are there better ways to do this?