Lab Case · Confirmed Repair

Windows-1252 CSV converted to UTF-8 without guessing Auto mode

The browser can prove the file is not valid UTF-8, but the user must confirm the legacy source encoding before conversion.

Reproducible binary fixture
Issue: encodingAuto outcome: blockedAfter source confirmation: repair allowed

Intended text in the fixture

name,city,note
José,Montréal,Café résumé
Müller,Zürich,Crème brûlée

The downloadable file stores those characters as Windows-1252 bytes rather than UTF-8 bytes.

The safety behavior to reproduce

Leave Source encoding on Auto

Upload the fixture. Auto should identify that the byte sequence is not valid UTF-8 without claiming to know the legacy charset.

Confirm repair is disabled

The report should require source-encoding confirmation rather than offering a guessed conversion.

Select Windows-1252

The same file is decoded using the encoding you explicitly selected. The repair can now be enabled if CSV structure is otherwise safe.

Download and re-check

Upload the repaired copy again with Auto. The converted bytes should validate as UTF-8 while the accented text remains intact.

Why this matters

Many legacy encodings overlap for ordinary ASCII bytes. A short CSV can therefore be impossible to classify reliably from bytes alone. A tool that silently labels every non-UTF-8 file as Windows-1252 risks corrupting Korean, Japanese, or other text. CSVFixLab chooses a confirmation step instead.

Decision: conversion is safe only after the actual source encoding is confirmed.

Measured worker results

Executed 2026-10-11 using the CSVFixLab worker handler and the downloadable fixture bytes. These are controlled synthetic tests. No customer file or live Shopify import was used.

Source encoding is known from fixture construction. Auto is also tested and must block repair.

Worker mode: encoding. The table records the worker's serialization decision. Diagnosis-only tool pages do not offer a repair download button.

On a small screen, scroll the table horizontally to read every column.

RunData recordsColumnsWorker permits serializationReported issues
Original bytes · Auto encoding23Noencoding: Auto mode does not guess legacy encodings. Choose the source encoding above before converting this file to UTF-8. / encoding-confirmation: The current preview preserves CSV structure, but repair stays disabled until you select the actual source encoding.
Original fixture · windows-125223Yesencoding: Decoded as windows-1252. If the CSV structure is safe, the repaired download will be re-exported as UTF-8.
Corrected example · rechecked with Auto23YesNo issues detected by these checks

Corrected fixture

name,city,note
José,Montréal,Café résumé
Müller,Zürich,Crème brûlée

Download corrected example · Download complete measured reports

Fixture identity and test scope

Original SHA-256: 23bdd6e3312acafaa07e8b2628d020e2a3754cabe7a5217aa63cc1b70d3c429f

Corrected SHA-256: 9ff4ccaec5c2c20110064491b3fb765edf45fa68cd9f2d2d0d442a48e340e459

Node v24.19.0; actual worker handler with File-compatible byte input; no Shopify live import. Record numbers refer to parsed CSV records, including the header, rather than physical lines. The test checks reported errors and, for automatic conversions, equality of the parsed field values. It does not establish compatibility with every importer.