Browser-native file tools

How to Fix Garbled Characters in a CSV Opened in Excel

May 13, 2026 · 6 min read

If a CSV looks normal in one app but broken in Excel, the file is usually not corrupted. Excel is reading the bytes with the wrong character encoding.

The classic symptoms:

cafe -> café
niño -> niño
it's -> it’s
"hello" -> “hello”
€10 -> €10

This is called mojibake: text encoded one way, decoded another way.

Why this happens

CSV files are plain text, but plain text still needs an encoding. UTF-8, Windows-1252 and Latin-1 all map bytes to characters differently.

Modern web apps usually export UTF-8. Older Windows software often expects Windows-1252. Excel on Windows may guess the local Windows encoding when you double-click a .csv, especially if the file has no UTF-8 BOM.

So the file may be valid UTF-8, but Excel opens it as Windows-1252. The bytes for é become é.

Fast fix: convert to UTF-8 with BOM

For CSVs that need to open cleanly in Excel, UTF-8 with BOM is the safest target.

  1. Open the CSV encoding converter.
  2. Upload the broken CSV.
  3. Leave source encoding on auto-detect, or choose Windows-1252 if auto-detect is wrong.
  4. Choose UTF-8 with BOM as the output.
  5. Download the fixed file and open it in Excel.

The BOM is a tiny marker at the start of the file that tells Excel, “read this as UTF-8.”

Excel-only fix

If you do not want to convert the file, import instead of double-clicking:

  1. Open Excel.
  2. Go to Data -> From Text/CSV.
  3. Pick the file.
  4. Set File Origin to 65001: Unicode (UTF-8), Windows-1252, or the encoding that matches the file.
  5. Check the preview before loading.

This is slower, but it keeps you in Excel.

How to recognize the source encoding

Use these clues:

SymptomLikely problem
é, ñ, üUTF-8 read as Windows-1252
’, “, ”UTF-8 smart punctuation read as Windows-1252
? replacing accentsSaved into an encoding that could not represent the character
 at the start of the first headerUTF-8 BOM shown as text

If you are not sure, duplicate the file before experimenting so you do not overwrite the only copy.

Python fix

For repeatable workflows, convert with pandas:

import pandas as pd

df = pd.read_csv("broken.csv", encoding="cp1252")
df.to_csv("fixed.csv", index=False, encoding="utf-8-sig")

utf-8-sig writes UTF-8 with BOM, which is friendlier to Excel.

Prevent it next time

When exporting CSVs for business users, choose CSV UTF-8 when the app offers it. If the receiving audience is mostly Excel users on Windows, use UTF-8 with BOM.

After fixing encoding, check the delimiter too. A correctly encoded file can still open in one column if Excel expects semicolons instead of commas. Use the comma-delimited CSV converter for that part.

Read next