Note that having an encoding switch leaves room for adding back other encoding support, at least for reading such files from the FS, in the future. Not saying we should open up a debate about supporting codepages again, but it allows for this possibility if, in the future, it becomes easier support other encodings.
Basically, the encoding parameter could be undefined for any value other than utf8, ascii, utf16(bom?), utf16le and utf16be for now. In the future, you could add things like sjis, etc.
One way to add this would be to attach the parameter to the end of $read (and $fread too):
//echo -a $read(file.txt, wn, *foo*, 1, utf16le)
Since the current last param is [N] (numeric), you can autodetect when it is present, so we could also have:
//echo -a $read(file.txt, wn, *foo*, utf16le)
And of course everything should get transcoded to UTF-8 internally (or whatever mIRC's internal rep is).