It turns out that Excel on Windows interprets CSV files as if they were encoded using some codepage unless the file begins with a UTF8-encoding BOM (0xef 0xbb 0xbf). So if your CSV file contains some text fields that have non-ASCII characters in them, Excel will mangle them. I verified this experimentally. This seems to be an Excel-only thing. Other spreadsheet programs I tried always assume UTF8 for CSV files. On the other hand, every spreadsheet I have access to was able to silently ignore a UTF8 BOM at the beginning of the file.