Guides

Why Your CSV Shows Strange Characters (and How to Fix It)

By the Opener team6 min read

Strange characters such as “é” or “Сума” mean the CSV was saved in one text encoding and opened as if it were another — the letters are still in the file, they are just being decoded wrongly. Open it with the right encoding (the CSV viewer detects it automatically) and save a UTF-8 copy. Question marks (“????”) are different: they usually mean the letters were already lost when the file was written.

What an encoding is, in one minute

A CSV file is plain text, and on disk text is just a list of numbers (bytes). An encoding is the table that says which number means which letter. For plain English letters and digits almost every encoding agrees, which is why the numbers in your bank export look fine while names and descriptions turn into garbage.

The three you will meet in exports from accounting software and banks:

The file itself usually does not say which encoding it uses. The program opening it has to guess, and if it guesses wrong you get mojibake — the technical name for this garbled text.

Read the garbage: what each pattern tells you

The kind of garbage is a clue to what went wrong.

You see You expected What happened
é, ü, € é, ü, € UTF-8 file opened as Windows-1252
Сума (lots of Ð and Ñ) Сума UTF-8 Cyrillic opened as Windows-1252
Ñóìà (accented Latin letters) Сума Windows-1251 file opened as Windows-1252
Cafй Café Windows-1252 file opened as Windows-1251
� (black diamond with ?) any letter Legacy file opened as UTF-8
???? any letter Letters lost when the file was saved

Pairs like “Ô + something or “Д/“Ñ” + something are the fingerprint of UTF-8 being read as a legacy encoding: each non-English letter is two bytes in UTF-8, and the old table shows each byte as a separate symbol. That is good news — nothing is lost, and opening the file as UTF-8 fixes it.

Plain question marks are bad news. They usually appear when a program tried to save text in an encoding that has no slot for those letters (for example Cyrillic into Windows-1252) and replaced every one of them with ?. The original letters are no longer in the file, and no viewer can bring them back. The fix is to export again from the source system, choosing UTF-8 or the correct regional encoding if the export dialog offers it.

The BOM: why Excel gets UTF-8 wrong

A UTF-8 file may start with three invisible bytes called a byte order mark (BOM). It is a hint that says “this file is UTF-8”.

When you double-click a CSV, Excel relies heavily on that hint. With a BOM it usually reads UTF-8 correctly; without one it often assumes your computer’s legacy encoding — and that is exactly how a perfectly good UTF-8 export from a bank turns into “Сума”. Other programs work the other way round and display the BOM as junk like  at the start of the first column header. If you see that, the file is UTF-8 and the BOM is being shown as text.

Fix 1: open it with automatic detection

The quickest fix is to let something detect the encoding for you. The Opener CSV viewer tries UTF-8 first and falls back to Windows-1251 or Windows-1252 depending on the text, so names and descriptions appear correctly without an import wizard. It also detects the separator — comma, semicolon, tab or pipe.

The file is read in your browser and is not uploaded anywhere, which matters for payroll, invoices and bank statements. To fix the file for other programs, use the export button: you get a clean UTF-8 copy of the table (the current view, so clear any search first if you want every row). If your problem is that everything lands in one column rather than garbled letters, see why a CSV opens in one column.

Fix 2: import it in Excel with the right “File origin”

Do not double-click the file. Instead, open a blank workbook and use the Data tab’s “From Text/CSV” import. The preview window has a File origin list where you choose the encoding:

Switch between them and watch the preview — the moment the names look right, you have the correct one. Then load the data. If you need to send the file on, save it from Excel using the “CSV UTF-8” file type rather than plain “CSV”, which may use the legacy encoding again.

Fix 3: Google Sheets, LibreOffice or a text editor

Google Sheets. Importing a CSV into Google Sheets (File → Import) works well with UTF-8 files, and the import dialog lets you choose the separator. It is a less dependable route for legacy files: if a Windows-1251 or Windows-1252 export still shows garbled letters, convert it to UTF-8 with one of the other methods and import that copy.

LibreOffice Calc. When you open a CSV, LibreOffice shows a text import dialog with a Character set list. Pick Unicode (UTF-8), Cyrillic (Windows-1251) or Western Europe (Windows-1252) and the preview updates immediately. It is free and works on Windows, macOS and Linux.

A text editor. Editors such as Notepad on Windows, TextEdit on macOS or a code editor like VS Code let you choose the encoding when saving. The catch: the editor must first open the file with the correct encoding. If the text looks right in the editor, save it as UTF-8. If it already looks garbled there, saving will just preserve the garbage — reopen it with the right encoding first.

Frequently asked questions

Can I fix “????” in my CSV?

Usually not. Question marks mean the characters were replaced when the file was written, so the original letters are not in the file. Export it again from the accounting software or bank, choosing UTF-8 if possible.

Which encoding should I use when I save or export?

UTF-8. It stores every alphabet, and every modern program understands it. If colleagues open it by double-clicking in Excel, use Excel’s “CSV UTF-8” option so the file starts with a BOM.

Will changing the encoding change my numbers?

No. Digits, dots and commas are the same in UTF-8, Windows-1251 and Windows-1252, so amounts and dates are unaffected. Only letters outside basic English change.

Is it safe to fix a bank export online?

Only if the tool does not upload it. The CSV viewer decodes and exports the file entirely in your browser, so the statement never leaves your device.