As far as I can determine, binaryen always fails to open files that contain non-ascii (or perhaps non-latin-1 or some other windowsy encoding) in their path on windows. This is probably because there is no explicit "wide char" support in the code, which is how windows represents unicode, as utf-16.
I have tried to process files via unicode paths with a self-built wasm-opt.exe within the developer command prompt, inside cygwin's mintty, and programmatically (from rust bindings):
cygwin:
$ bin/wasm-opt.exe ../..//hello_world❤️.wasm -o ../..//hello_world_opt.wasm
Failed opening '../..//hello_world??.wasm'
command prompt:
c:\cygwin64\home\Brian\binaryen\build>bin\wasm-opt.exe ..\..\hello_world❤️.wasm -o ..\..\hello_world_opt.wasm
Failed opening '..\..\hello_world??.wasm'
Fixing this seems like it would require all paths to be hidden behind some platform-specific typedefs that resolve to WCHAR on windows, but I don't have much experience here.