Attached is a patch against the subversion repository at revision 327.
It implements a possibility to influence the way HTML::Template loads
files (e.g. respecting encoding, line endings), and comes with a test
file for that.
If you like the patch, I'd be happy to see it main HTML::Template.
Please take a look at the way file_cache is tested, I'm not entirely
sure that I used the right options to force file caching.
The patch has to be applied in a clean utf8 environment, otherwise the
file 'templates/utf8-test.tmpl' might have an incorrect charset.

I've done something similar in the past to handle encodings, but I'm
wondering if we shouldn't simplify it with an "encoding" parameter that
could just be "utf-8" and use the open mode behind the scenes. It keeps
the interface simple and doesn't require the user to learn about Perl IO
layers.
On the other hand, it prevents using IO layers for other trickery like
line endings (as you mentioned). Maybe I should implement both.

open_mode option will appear in HTML::Template 2.10 which will be
released soon.
I had to tweak a couple of things so that the cache would also take
open_mode into effect, but your patches were a good start.