A small, dependency-free PHP class for encoding and decoding standalone Microsoft Script Encoder blocks, such as data commonly found in .vbe and .jse files.
This project provides a single WindowsScriptEncoder class with two public methods:
WindowsScriptEncoder::encode(string $plain, ?int $codePage = null): stringWindowsScriptEncoder::decode(string $encoded, ?int $codePage = null): string
It is byte-oriented, validates encoded block metadata, and supports optional DBCS lead-byte handling for legacy Windows code pages.
- Encode plain script bytes into a standalone Script Encoder block.
- Decode standalone Script Encoder blocks back to plain script bytes.
- Validates block markers, encoded length, checksum fields, and escape sequences.
- Uses fixed little-endian 32-bit packing for length and checksum fields.
- Handles Script Encoder escape sequences such as
@#,@&,@!,@*, and@$. - Supports optional DBCS code page handling for legacy Windows scripts:
932Japanese Shift-JIS936Simplified Chinese GBK/GB2312 family949Korean950Traditional Chinese Big51361Korean Johab
- No external dependencies.
- No Composer package is required.
- PHP 8.0 or later.
The class uses PHP 8 features such as match, str_starts_with(), and str_ends_with().