Writing transparently re-encoding open/read functions for general usage may be possible but is hardly a "system level" functionality. I guess that should need to go into an extra (external) module.
Adding BOM to the encodings module may be interesting. But technically I think it belongs into the unicode module as it is an unicode feature. The encodings module is a bit broader and would need something like chardet indeed.
