This tool embeds a manifest that force I/O using UTF-8 on Widows executables.
They usually performe I/O using legacy encoding (e.g. ISO-8859-1 / Shift-JIS / GBK) by default. To force Unicode on them, we have to use UTF-16 (wide characters) API instead. However, other OSes allow us to use UTF-8 and Unicode in narrow strings. This tool give Windows executables compatibility with other OSes.
- Windows SDK in Visual C++ (mt.exe)
- Cargo (the package manager of Rust)
Add Cargo and mt.exe
in PATH in advance. x64 Native Tools Command Prompt seems to be the most easily accessible.
cargo install --git https://github.com/tats-u/forceu8exe.git
forceu8exe apply [path of .exe file]
You can also output the manifest to a file like (e.g. foobar.exe.manifest
):
forceu8exe manifest foobar.exe.manifest
# snip
add_executable(
foobar
foobar.exe
foobar.exe.manifest # Append here
)
# snip
MIT