Why Your CSV Shows Garbage Characters in Excel (and How to Fix It)
Café becomes Café. José turns into José. Curly quotes explode into “ soup. Your file is not corrupted — this is an encoding mismatch. The CSV's text is stored as a sequence of bytes, and Excel is reading those bytes with the wrong decoder. On a US Windows machine, Excel's legacy CSV open assumes the file is in Windows-1252 (the old Windows Latin code page); most modern exports are in UTF-8. When a two-byte UTF-8 accent like é gets decoded as if it were two separate Windows-1252 characters, you get the classic é mojibake. The fix is to tell the reader which encoding the file actually is.
Method 1: Excel import wizard (pick the encoding)
- In a blank workbook, go to Data → From Text/CSV and select your file.
- In the preview dialog, find File Origin. If the file came from a modern system or web export, choose 65001: Unicode (UTF-8). If it came from old Windows software, try 1252: Western European (Windows).
- Watch the preview grid: the accents should snap back to normal. If not, try the other option.
- Click Load. Done — nothing was retyped, and the original file is untouched.
Same rule as with leading zeros: never double-click the CSV. The wizard is the only path that lets you set the encoding before Excel commits to its guess.
Method 2: Convert the file once, fix it everywhere
If you control the file, the durable fix is to save it as UTF-8 so every program reads it right. In Notepad++: open the file, then Encoding → Character Sets → Western European → Windows-1252 — if the accents now look correct, you found the real encoding; then Encoding → Convert to UTF-8 and save. In VS Code: click the encoding label in the status bar, choose Reopen with Encoding to try 1252, then Save with Encoding → UTF-8.
One special note: Excel opens UTF-8 with a BOM (byte-order mark) correctly, but a UTF-8 file without a BOM is the one Excel misreads. Adding a BOM fixes Excel specifically — at the cost of a stray invisible character at the start of the file that can confuse other tools. If your CSV travels to more than Excel, prefer clean UTF-8 without BOM and use the import wizard.
Method 3: Google Sheets
Sheets auto-detects encodings and usually gets this right on upload via File → Import. If it doesn't, the fix is upstream: convert the file to UTF-8 with the steps above and re-import.
Method 4: Python (for the technical)
import csv
# If accents show as garbage, the file isn't UTF-8:
with open('customers.csv', newline='', encoding='windows-1252') as f:
rows = list(csv.reader(f))
# utf-8-sig also strips a leading BOM if one is present:
with open('export.csv', newline='', encoding='utf-8-sig') as f:
rows = list(csv.reader(f))
# Normalize to clean UTF-8 once, the proper way:
with open('customers.csv', newline='', encoding='windows-1252') as src:
rows = list(csv.reader(src))
with open('customers_utf8.csv', 'w', newline='', encoding='utf-8') as dst:
csv.writer(dst).writerows(rows)
The point is the encoding argument: windows-1252 to read legacy exports, utf-8-sig to read BOM files, and plain utf-8 to write the fixed file.
What if only some rows are garbled?
That means the file contains mixed encodings — one export glued onto another, or accented rows pasted in from somewhere else. No single encoding setting fixes that; the wrongly-encoded rows have to be converted individually. If the mojibake follows the pattern à plus a second garbled character, those rows were UTF-8 bytes read as Windows-1252 and can be repaired mechanically: encode the garbled text back to Windows-1252 bytes, then decode as UTF-8.
The one-click way
Most mangled CSVs start life as messy exports — mixed encodings, stray spaces, ragged rows — and every tool they pass through makes its own guesses about your data. CSV Cleaner converts to clean UTF-8, trims every cell, normalizes headers, and strips blank rows in one click, so the file Excel imports has nothing left to misread. $9 once, yours forever.
See CSV CleanerMore CSV fixes: Why Excel Deletes Leading Zeros from CSV Files · How to Fix Numbers Stored as Text in CSV Files · CSV Cleaner