Why Your CSV Shows
Weird Characters.
Published June 12, 2026 • 5 min read
You open your CSV export, and instead of "Café" you see "Café." Or perhaps your currency symbols have turned into blocks or question marks. This phenomenon is known as **Mojibake**, and it’s the most common "silent" killer of data imports.
What is Encoding?
Every character on your screen is stored as a number. An encoding is the key that tells your computer which number maps to which character. The two most common keys are:
- UTF-8: The modern global standard. It supports every language.
- Latin-1 (ISO-8859-1): An older standard common in legacy Windows systems and Excel exports.
The Conflict: Why Mojibake Happens
Mojibake happens when a file is saved using one key (like Latin-1) but your software tries to read it using another (like UTF-8). It’s like trying to play a Blu-ray in a VCR—the data is there, but the "player" doesn't understand the format.
Don't want to learn the technical details?
Our tool auto-detects your encoding and fixes these characters instantly.
Common Examples
If you see these patterns, you have an encoding conflict:
- é instead of é
- € instead of €
-  appearing at the very start of your file (this is a Byte Order Mark or BOM)
How to Fix It
Traditionally, you would need a text editor like Notepad++ or VS Code to manually "Re-open with Encoding" and then "Save with Encoding." This is time-consuming and prone to error.
CSVFixer automates this entire process. Our engine analyzes the byte signature of your file, identifies the source encoding with high confidence, and re-saves it as a clean, standardized UTF-8 file that works perfectly with Shopify, WooCommerce, and Salesforce.
Ready to clean your data?
Upload your file to our homepage and let us handle the technical heavy lifting.
Platform-Specific Encoding Quirks
- Excel on Mac vs Windows – Mac Excel defaults to UTF‑8, while Windows often saves CSVs in Latin‑1 or adds a BOM, leading to different character sets.
- Google Sheets exports – Usually UTF‑8, but sometimes a BOM is added, which can break imports that expect a pure UTF‑8 file.
- MySQL and PostgreSQL exports – Both may default to Latin‑1 depending on server configuration, producing files that look fine in a spreadsheet but break in strict import tools.
How to Detect Your CSV's Encoding Without Software
Pattern‑matching method
Characters like é usually indicate UTF‑8 data read as Latin‑1, while € points to UTF‑8 being interpreted as Windows‑1252. Spot these patterns to guess the original encoding.
Using Python's chardet
import chardet
with open('file.csv','rb') as f:
raw = f.read()
print(chardet.detect(raw))
Using the file command
file -i yourfile.csv
# example output: text/plain; charset=iso-8859-1