Repair a mojibake legacy CSV
A table exported by an old system is GBK; confirm the source encoding against the preview, then convert it to UTF-8 for the new system.
Guide
Encoding conversion does not “relabel” an already-decoded string; it starts from the file's binary bytes. The implementation first looks for a UTF-8 or UTF-16 BOM and tries strict UTF-8; when that fails it tries GBK, Big5 and Shift_JIS, scores the candidates for readability and recommends one, which the user confirms against a preview before it is re-encoded as UTF-8.
Updated 2026-09-272 min read
Encoding conversion does not “relabel” an already-decoded string; it starts from the file's binary bytes. The implementation first looks for a UTF-8 or UTF-16 BOM and tries strict UTF-8; when that fails it tries GBK, Big5 and Shift_JIS, scores the candidates for readability and recommends one, which the user confirms against a preview before it is re-encoded as UTF-8.
-utf8 file.A GBK CSV → strict GBK decoding → Unicode text → UTF-8 bytes. Choosing CRLF normalises every CRLF/CR/LF to \r\n; choosing LF normalises CRLF/CR to \n.
�, which means the information can no longer be recovered losslessly.A table exported by an old system is GBK; confirm the source encoding against the preview, then convert it to UTF-8 for the new system.
Move a batch of subtitles from LF to CRLF, or the other way round, to stop them displaying oddly in a player.
Convert the locally encoded source of an old project to UTF-8 to cut down mojibake when collaborating.
No; line endings are only normalised when CRLF or LF is chosen explicitly.
The source bytes, the decoded text and the output are all handled locally in the browser and are never uploaded.
Updated 2026-09-27
Auto-detect GBK / Big5 / Shift_JIS and convert to UTF-8, with BOM and line-ending handling
Detects GBK, Big5, Shift_JIS and other encodings and converts them to UTF-8, BOM and line endings included