To anyone who was following this: It was Apache. The AddDefaultCharset directive in httpd.conf (on the new box) was encoding data before it hit MySQL (which is why none of my charset-collation changes mattered). All working now. Thanks to all who responded.