How to Save Excel 2016 CSV Files with UTF-8 Encoding
Question details
The user needs a reliable method to export Excel 2016 worksheet data as a CSV file with UTF-8 encoding to preserve special characters.

- Product
- Microsoft Excel 2016
- Device & OS
- not provided
- Scenario
- Exporting tabular data to a CSV format while ensuring special characters, line breaks, and quotation marks are encoded correctly for use in another system.
- Observed behavior
- The standard Web Options method in Excel 2016 does not reliably produce a true UTF-8 CSV file, resulting in incorrectly encoded characters.
Ensure your worksheet data is fully cleaned and formatted. Make a note of any special characters or symbols that require UTF-8 encoding to display correctly in your target system.
Use a VBA Macro with ADODB.Stream (Recommended)
Since the built-in Excel 2016 features are unreliable for this task, using a VBA macro to force UTF-8 encoding is the most robust solution.
The commonly suggested Web Options method is a known issue in Excel 2016 and often fails to encode the CSV properly. To guarantee UTF-8 output, you must use a VBA script utilizing the ADODB.Stream object to bypass Excel's native CSV saving mechanism.
Click File > Save As, and choose to save your current workbook as an Excel Macro-Enabled Workbook (*.xlsm).
Press Alt + F11 on your keyboard to open the Excel Visual Basic for Applications (VBA) editor.
In the top menu, click Insert > Module to open a blank coding window.
Create a macro utilizing ADODB.Stream. Set obj.Type = 2 and obj.Charset = "utf-8". Write a loop that iterates through your ActiveSheet or ListObject cells, appending the values using obj.WriteText with a comma delimiter, and finally execute obj.SaveToFile to export the file.
Close the VBA editor, press Alt + F8, select your newly created Convert_xl_to_csv_utf8 macro, and click Run. Test the output file in a text editor to ensure delimiters and special characters display correctly.

Use the Built-in Web Options (Unreliable in 2016)
This is the standard interface method for changing encoding. While widely circulated online, it does not reliably produce true UTF-8 files in Excel 2016.
Save as UTF-8 CSV Easily with WPS Spreadsheet
Skip the complicated VBA macros. WPS Spreadsheet provides a built-in, fully functional option to save files directly as UTF-8 encoded CSVs with just a few clicks.
- 1. Open Your File: Launch WPS Spreadsheet and open your existing workbook.
- 2. Go to Save As: Click the Menu button in the top left corner and select Save As.
- 3. Select CSV UTF-8 Format: In the File Type drop-down menu, select 'CSV UTF-8 (Comma delimited) (*.csv)'.
- 4. Save the File: Choose your desired save location and click the Save button. Your special characters are now properly encoded.

Frequently Asked Questions
Why do special characters look garbled when I open my CSV file?
This happens when a CSV is saved using standard ANSI or local system encoding instead of UTF-8. Target systems reading the file expect UTF-8 to correctly decode special characters, accents, and non-Latin text.
Why doesn't the Web Options method work correctly in Excel 2016?
Excel 2016's Web Options encoding setting was notoriously buggy for CSV exports and often failed to apply the byte-order mark or strict UTF-8 rules. Microsoft introduced a dedicated 'CSV UTF-8' save option in later versions (Microsoft 365 and Excel 2019) to fix this.
Can I automate the VBA UTF-8 conversion for multiple files?
Yes, you can modify the provided ADODB.Stream VBA macro to loop through all worksheets in a workbook or all workbooks in a specific folder, automatically converting each to a separate UTF-8 CSV file.




