Guides

CSV shows broken characters such as ü or ? instead of ü: cause and fix

You export a customer list, open it elsewhere, and names like Müller appear as Müller or M?ller. The data is not damaged. The program simply read the bytes with a different character encoding than the one used to write them.

Updated:

The cause: two encodings for the same letters

A CSV file is plain text without any note about how its characters are encoded. Today most programs write UTF-8, where letters such as ü, é or ß take two bytes. Older Windows programs and many Excel versions use Windows-1252, where the same letters take one byte.

When UTF-8 is read as Windows-1252, every special character becomes two strange symbols, for example ü instead of ü. When Windows-1252 is read as UTF-8, the single byte is invalid and usually appears as a question mark or a replacement symbol.

Typical situations

A web shop, CRM or online form exports UTF-8, and double-clicking the file opens it in Excel with broken umlauts. This happens because many Excel versions only recognise UTF-8 when the file starts with an invisible marker called a byte order mark.

The opposite also happens: a list saved from Excel as a classic CSV is imported into a newsletter tool or a script and shows question marks, because that program expects UTF-8.

A related issue is the separator. Excel in countries that use a comma as decimal separator, such as Germany, expects semicolons between columns, so a comma-separated file can end up in a single column.

Open a UTF-8 file correctly in Excel

Instead of double-clicking, import the file. This way Excel asks for the encoding and separator instead of guessing.

  1. Open an empty workbook in Excel.
  2. Choose Data, then From Text/CSV, and select the file.
  3. Set File Origin to 65001: Unicode (UTF-8) and check the preview.
  4. Choose the correct delimiter if the columns are not split yet, then load the data.
  5. When saving, use CSV UTF-8 so the next program reads the file correctly.

Convert an old Excel CSV to UTF-8

If a file from Excel shows question marks in another program, convert it once. The data converter first tries UTF-8 and falls back to Windows-1252 when the bytes are not valid UTF-8, so umlauts are read correctly. It then writes clean UTF-8 as CSV, JSON or another format, and detects semicolons, commas and tabs as separators on its own.

Converting the same file several times in the wrong direction can damage the text permanently, for example when Müller is saved again as UTF-8. Always start from the original export.

Check that nothing changed

After a conversion, it is worth confirming that only the encoding changed and not the content. Compare the two CSV files by a key column such as a customer number: the tool lists changed cells, new rows and missing rows, so a broken import is easy to spot before the list is used.

Do it now

More guides