Troubleshooting

Garbled filenames in ZIP files: how Bandizip's code page switch fixes them

Why a 2011 ZIP full of Korean filenames opens as question marks, and the two-click fix inside Bandizip's code page dialog.

2026-10-02 7 min read Bandizip Guide
ZIP archive showing mojibake filenames before and after applying a code page in Bandizip

The archive opens, the file list appears, and every name is a row of question marks, boxes, or characters that look like a corrupted font. Nothing is broken. The bytes are fine. What failed is the interpretation of the filename bytes, and it failed because of a decision made by whoever created the archive, possibly fifteen years ago.

Why it happens

The ZIP format stores filenames as bytes. Originally there was no statement about which character encoding those bytes used, so each tool wrote whatever its operating system used: EUC-KR on Korean Windows, Shift-JIS on Japanese, GB2312 on Simplified Chinese, Big5 on Traditional, Windows-1252 across Western Europe.

In 2006 the format gained a flag — general purpose bit 11 — meaning "these names are UTF-8". Modern tools set it. Tools from before that, and a surprising number of scripts written after, do not. When the flag is absent, the reader has to guess, and most readers guess UTF-8 because that is the sane default today. Guess wrong and you get mojibake.

The fix in Bandizip

  1. Open the archive in the Bandizip window rather than extracting straight from Explorer.
  2. Open Code Page from the toolbar or the View menu. The dialog lists encodings and shows a preview of the filenames as they would be interpreted.
  3. Try the candidates in order of likelihood: EUC-KR for Korean sources, Shift-JIS for Japanese, GB2312 or Big5 for Chinese, Windows-1252 for Western European.
  4. When the preview reads correctly, extract. The names are written correctly — the archive itself is untouched.

Bandizip keeps JSON, plain-text config and detection heuristics behind the automatic mode, and in practice it identifies Korean and Japanese archives correctly most of the time. The manual dialog exists for the cases where the automatic guess picks the wrong CJK encoding, which happens most often with short filenames that contain no distinguishing characters.

Why converting afterwards is a bad idea

Extracting with the wrong code page and then renaming the files by hand is the common alternative, and it fails for a specific reason: the bytes are already lost. A wrong interpretation produces replacement characters, and those cannot be mapped back. You must interpret the original bytes correctly at extraction time, not repair the output afterwards.

Which encoding is which

ScriptCode pageTell-tale sign when wrong
KoreanEUC-KR / CP949Hangul becomes Latin letters with accents
JapaneseShift-JIS / CP932Kana becomes boxes or Greek letters
Simplified ChineseGB2312 / GBKHanzi becomes random Latin pairs
Traditional ChineseBig5Hanzi becomes different Hanzi entirely
Western EuropeanWindows-1252Accents appear as é style pairs

Preventing it when you create archives

Bandizip writes UTF-8 names by default and sets the flag, so archives you create open correctly everywhere. If you must produce archives for very old software — some industrial equipment and point-of-sale systems still choke on the flag — there is an option to store names in the local code page instead. Do not use it unless a specific machine forces you to.

When the fix does not work

  • Names are truncated. The archive used a legacy limit; nothing can restore what was never stored.
  • Only some names are broken. Mixed-encoding archives exist, usually built by appending to an old file with a new tool. Extract in batches, choosing the code page that fits each group.
  • Nothing changes in the preview. The archive may already be UTF-8 and the problem lies elsewhere — check that your Windows locale supports the characters, and that the extraction folder is not on a filesystem with a restrictive name policy.

Most people meet this problem once, fix one archive, and forget the mechanism. The version worth remembering is the one that saves a client delivery: open in the Bandizip window, set the code page, extract. It takes ten seconds and it is the difference between a usable archive and a folder of question marks. If you are still setting up the tool, the install guide covers where the setting lives.