CSVCheck

Fix CSV encoding: weird characters like é and � in your CSV

Updated October 16, 2026

Your CSV shows Café instead of Café, ’ where an apostrophe should be, or Caf� with a question mark in a diamond. The data isn’t corrupted (yet): the file is being read with the wrong character encoding.

Short answer: save or convert the file to UTF-8, and open it in a way that tells the program it’s UTF-8. The table below tells you which case you have.

What the symptom tells you

You seeWhat happenedFix
é, ã, ’, “A UTF-8 file was read as Windows-1252 (or Latin-1)Reopen the file as UTF-8. Nothing to convert.
� (replacement character)A Windows-1252 file was read as UTF-8Convert the file from Windows-1252 to UTF-8.
é even in a text editor set to UTF-8The garbled text was saved into the file (double encoding)Repair the text itself (see the last section).
 before the first column name, or a first column that “doesn’t exist”The file starts with a UTF-8 byte order mark (BOM) the importer doesn’t expectSave as UTF-8 without BOM.

Why this happens

A CSV file doesn’t say which encoding it uses. Every program has to guess. Excel’s classic CSV (Comma delimited) format saves text in the system’s legacy code page, which is Windows-1252 on most Western European and US machines. Most web apps, databases and APIs expect UTF-8. Accented letters, currency symbols and curly quotes are stored differently in the two, so they break when a file crosses from one world to the other.

Save a CSV as UTF-8 in Excel

  1. File → Save As (or Save a Copy).
  2. In the file type list, choose CSV UTF-8 (Comma delimited) (*.csv), not plain CSV (Comma delimited).
  3. Save.

Excel adds a BOM to UTF-8 CSVs. Excel itself likes that, but some importers read it as part of the first column name. If an import complains that your first column is missing, remove the BOM (CSVCheck’s Fix & download does this).

Open a UTF-8 CSV correctly in Excel

Double-clicking a UTF-8 file without a BOM can make Excel read it in the legacy code page, which gives you é. Instead:

  1. Data → From Text/CSV and pick the file.
  2. Set File Origin to 65001: Unicode (UTF-8).
  3. Check the preview, then Load.

Google Sheets (File → Import) and LibreOffice (Character set in the import dialog) handle UTF-8 well, so opening the file there is also a quick way to check what it really contains.

Convert an existing file to UTF-8

  • VS Code: click the encoding in the status bar → Reopen with Encoding → pick Western (Windows 1252) and check that the text looks right. Then click it again → Save with Encoding → UTF-8.
  • Notepad (Windows 10/11): open the file, File → Save As, set Encoding to UTF-8.
  • Command line (macOS, Linux):
iconv -f WINDOWS-1252 -t UTF-8 input.csv > output.csv

If the garbled text is already in the file

When a file was read with the wrong encoding and then saved, the file really contains é. Reopening it differently won’t help. For a few cells, find and replace works (é → é, ’ → ’). For a whole file, the Python library ftfy reverses most of these mix-ups automatically:

pip install ftfy
python -c "import ftfy, sys; sys.stdout.write(ftfy.fix_text(open('input.csv', encoding='utf-8').read()))" > output.csv

If you can export the file again from the source system, that’s still the safest fix.

Find out which encoding your file uses

CSVCheck detects UTF-8, UTF-16 and Windows-1252, flags a BOM and spots garbled sequences like é. Fix & download converts the file to UTF-8 without a BOM. All of it happens in your browser.

More CSV guides