# CSV UTF-8 Excel Fix: Stop Accents Turning to Junk

- Author: FastBankConvert (https://fastbankconvert.com)
- Published: 2026-10-17
- Category: CSV, JSON and text output
- Canonical: https://fastbankconvert.com/blog/csv-utf-8-excel

> Why accented payees turn to junk in a CSV in Excel, how UTF-8 and the byte order mark fix it, and how to save CSV UTF-8 from Excel.
Accented payee names turn to junk in Excel when a CSV is saved as UTF-8 but Excel opens it as an older Windows encoding. The fix is to import the file through Data > From Text/CSV and pick UTF-8, or to start the CSV with a byte order mark, which tells Excel the encoding up front.

## Why do accents break when a CSV opens in Excel?

Accents break because a CSV file carries no label saying how its characters were encoded, so Excel has to guess. When you double-click a CSV that has no marker, Excel often reads it with the computer's legacy code page instead of UTF-8, and every character outside plain English letters comes out as two or three wrong symbols.

The bytes in the file are fine. A name like José is stored in UTF-8 as the letters J, o, s and then two bytes for é. Read with the right encoding, those two bytes become one é. Read with the Windows Western code page, each byte becomes its own character, and José shows up as JosÃ©. The data did not change; only the reading did.

The examples below are made-up payee names, shown the way they should look and the way they look after that misreading.

| Correct text | How it looks when misread | What went wrong |
| --- | --- | --- |
| José Gómez | JosÃ© GÃ³mez | Each accented letter is two UTF-8 bytes, each shown alone |
| Müller GmbH | MÃ¼ller GmbH | The ü becomes Ã plus a second symbol |
| Café Lumière | CafÃ© LumiÃ¨re | Two accents, two pairs of junk |
| São Paulo Imports | SÃ£o Paulo Imports | The ã becomes Ã plus a pound-style mark |
| Fee €12.00 | Fee â‚¬12.00 | The euro sign is three bytes, so three wrong symbols |

The pattern is the giveaway. A capital Ã or â followed by another odd symbol, where a single accented letter should be, almost always means a UTF-8 file read as a Western code page. Programmers call this mojibake. Once you recognise it, you know the file is probably recoverable, because nothing was lost yet.

Bank statements are a common place to meet this. Payee names from shops abroad, transfers from people with accented names, and currency symbols in fee descriptions all sit outside basic ASCII.

## UTF-8 and the byte order mark in a CSV file

UTF-8 is the text encoding that stores every Unicode character, using one byte for plain English letters and two to four bytes for everything else. The byte order mark, or BOM, is an invisible three-byte marker at the start of a file that says "this is UTF-8". When Excel finds it, the accents read correctly.

The CSV format itself does not settle the encoding question. [RFC 4180, the CSV format description](https://www.rfc-editor.org/rfc/rfc4180), treats plain ASCII as the common case and leaves other character sets to a charset parameter that travels with the file's media type. A file saved to your downloads folder has no media type attached, so that parameter is gone by the time Excel sees it.

That leaves the BOM as the only hint inside the file. Microsoft's support article on [opening CSV UTF-8 files correctly in Excel](https://support.microsoft.com/en-us/office/opening-csv-utf-8-files-correctly-in-excel-8a935af5-3416-4edd-ba7e-3dfd2bc4a032) says a UTF-8 CSV opens normally if it was saved with a BOM, and that files without one should be imported rather than opened directly.

### How to tell whether a CSV has a BOM

You cannot see a BOM in Excel or in most text editors, because they hide it on purpose. A few ways to check:

- **Notepad on Windows** shows the encoding in the status bar at the bottom: "UTF-8 with BOM" or plain "UTF-8".
- **A code editor** such as VS Code shows the encoding in its status bar and lets you reopen or save with a different one.
- **A tool that ignores the BOM** shows three junk characters, ï»¿, stuck to the front of the first column name.

If the first header reads ï»¿Date instead of Date, the file has a BOM and the program you used does not understand it.

## Opening a CSV UTF-8 file in Excel without the mojibake

To open a CSV UTF-8 file in Excel without junk characters, start Excel first and import the file instead of double-clicking it. The import screen lets you set the file origin to UTF-8, shows a preview so you can see the accents come out right, and only then loads the rows into the sheet.

The step list below uses the route Microsoft names in its article, Data > Get Data > From File > From Text/CSV. The wording of the menu can vary slightly between Excel versions.

1. Open a blank workbook in Excel.
2. On the **Data** tab, choose **Get Data**, then **From File**, then **From Text/CSV**. In some versions the button sits directly on the ribbon as **From Text/CSV**.
3. Pick the CSV file and choose **Import**.
4. In the preview window, find **File Origin** and set it to **65001: Unicode (UTF-8)** if Excel did not pick it already.
5. Check the preview. The accented payee names should now read correctly.
6. Set the **Delimiter** to comma, or whatever the file uses.
7. Choose **Transform Data** if you need to set column types first, or **Load** to put the rows on a sheet.

The Transform Data step is worth a moment on a bank file. Power Query, the engine behind this import, guesses column types from the first rows. It may turn account or reference numbers into plain numbers and drop leading zeros. [Keeping leading zeros in a CSV](/blog/keep-leading-zeros-in-csv) covers how to stop that during the same import, so you only do it once.

Older Excel versions offer the Text Import Wizard instead. Its first page has the same **File origin** list, and the same UTF-8 choice fixes the accents.

## Saving CSV UTF-8 from Excel so accents survive

To save a CSV from Excel with accents intact, use File > Save As and choose **CSV UTF-8 (Comma delimited)** from the list of file types. The plain **CSV (Comma delimited)** option saves in the older Windows encoding, and any character that encoding cannot hold is replaced, usually with a question mark.

Current versions of Excel list both CSV types next to each other, which is how people pick the wrong one by accident. The UTF-8 version writes a BOM at the start of the file, so the next person who double-clicks it in Excel sees the accents correctly. That is usually what you want.

Either CSV type saves only the active sheet and drops formatting, and the warning about lost features is normal for a plain table. [What Excel keeps and drops when it saves as CSV](/blog/excel-save-as-csv#only-the-active-sheet-survives-excel-save-as-csv) covers those losses in full.

If the file is going to a program that cares about the separator as much as the encoding, for example one that expects tabs, the choice of format is a separate question. [TSV versus CSV](/blog/tsv-vs-csv) explains when a tab-separated file avoids comma trouble in payee names.

## Is the CSV encoding damage already permanent?

The damage is usually not permanent if you still have the original file, and often repairable even if you do not. Junk characters only become a real problem when someone opens the misread file, edits it, and saves it again, because the wrong symbols then get written back as if they were real text.

Start with the original download. If the file came from your bank or a converter and nobody has saved over it, import it again with the UTF-8 origin and the accents return. This is why it pays to keep the source file untouched and work on a copy.

If the only copy has already been saved with junk, there are two common cases:

- **Saved as plain CSV in the Windows encoding.** The junk characters were written back as the same bytes they came from, so importing that file as UTF-8 often restores the accents. Try this first; it costs one import.
- **Saved as CSV UTF-8 after the misreading.** Now the junk is real text. A find-and-replace in Excel can swap Ã© back to é, Ã¼ to ü and so on, one pair at a time. That works for a handful of payee names, but it is slow on a long file.

Some characters do not survive at all. A plain CSV save in the Windows encoding replaces anything outside that code page, such as Polish, Greek or Chinese letters, with question marks. Those are gone, and the only fix is to go back to the source and convert again.

When the source is a scan or a photo rather than a digital file, the accents depend on the text recognition, not the encoding. [An image to Excel converter app](/blog/image-to-excel-converter-app) has to read é as é in the first place, which is worth testing on a sample with accented names before you trust it.

## When a byte order mark in a CSV causes trouble

A byte order mark in a CSV causes trouble when the program reading the file does not expect one. Some import screens, scripts and older tools read the three BOM bytes as part of the first column name, so a header called Date becomes a column the program cannot find, and the import fails or skips the date field.

The usual signs are a first column name with ï»¿ in front of it, or an error saying a required column such as Date is missing when you can plainly see it. Scripts are a common place to hit this, because some file readers keep the BOM unless you ask them to strip it.

The fix depends on which side you control:

- **If you control the reader**, tell it the file is UTF-8 with a BOM. Most languages have an encoding option for exactly this.
- **If you control the file**, save it as UTF-8 without a BOM using a code editor, for the one program that needs it that way. Keep the BOM version for Excel users.
- **If you control neither**, put a dummy first column in the CSV so the BOM sticks to a name nobody uses. It is a hack, but it unblocks an import today.

There is no single setting that pleases every program, which is why it helps to know who opens the file next. FastBankConvert, which is getting ready to open, is built to write statements out as Excel, CSV or JSON; a workbook avoids the encoding question entirely, because the characters are stored inside the file's own format. You can [get started](/get-started) to hear when it opens.
