<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mahizul Islam</title>
    <description>The latest articles on DEV Community by Mahizul Islam (@mahizul).</description>
    <link>https://dev.to/mahizul</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3954282%2F53c71126-da8e-4c11-a964-a07be814336d.jpg</url>
      <title>DEV Community: Mahizul Islam</title>
      <link>https://dev.to/mahizul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mahizul"/>
    <language>en</language>
    <item>
      <title>How to Fix CSV Encoding Issues (UTF-8, Windows-1252, and More)</title>
      <dc:creator>Mahizul Islam</dc:creator>
      <pubDate>Wed, 27 May 2026 12:12:01 +0000</pubDate>
      <link>https://dev.to/mahizul/how-to-fix-csv-encoding-issues-utf-8-windows-1252-and-more-1i03</link>
      <guid>https://dev.to/mahizul/how-to-fix-csv-encoding-issues-utf-8-windows-1252-and-more-1i03</guid>
      <description>&lt;h1&gt;
  
  
  How to Fix CSV Encoding Issues (UTF-8, Windows-1252, and More)
&lt;/h1&gt;

&lt;p&gt;If you've ever opened a CSV file and seen broken characters like &lt;code&gt;â€™&lt;/code&gt; instead of apostrophes, or &lt;code&gt;Ã©&lt;/code&gt; instead of &lt;code&gt;é&lt;/code&gt;, you've encountered a CSV encoding problem. This is one of the most common issues developers and data analysts face when working with CSV files.&lt;/p&gt;

&lt;p&gt;In this guide, I'll explain why encoding issues happen, how to detect them, and how to fix them — without writing a single line of code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does CSV Encoding Matter?
&lt;/h2&gt;

&lt;p&gt;CSV files don't store information about their encoding. When you open a CSV, your software has to guess which encoding was used. If it guesses wrong, you get garbled text.&lt;/p&gt;

&lt;p&gt;The most common culprits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows-1252&lt;/strong&gt; — the default encoding for Excel on Windows. Fine for Western European languages, but breaks on special characters from other languages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ISO-8859-1 (Latin-1)&lt;/strong&gt; — similar to Windows-1252, commonly used in older systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UTF-16&lt;/strong&gt; — used by some Windows applications, includes a BOM (Byte Order Mark) at the start.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shift-JIS, GBK, EUC-KR&lt;/strong&gt; — common in Japanese, Chinese, and Korean systems respectively.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;UTF-8&lt;/strong&gt; is the universal standard. Every modern database, API, and web application expects UTF-8. If your CSV isn't UTF-8, you'll run into import errors, broken characters, and data loss.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Detect CSV Encoding
&lt;/h2&gt;

&lt;p&gt;Before fixing, you need to know what encoding your file is using. Look out for these signs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strange characters&lt;/strong&gt; like &lt;code&gt;â€™&lt;/code&gt;, &lt;code&gt;Ã©&lt;/code&gt;, &lt;code&gt;Â£&lt;/code&gt; — classic Windows-1252 misread as UTF-8&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Question marks&lt;/strong&gt; &lt;code&gt;?&lt;/code&gt; replacing characters — encoding mismatch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extra invisible characters&lt;/strong&gt; at the start — this is a BOM (Byte Order Mark)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import errors&lt;/strong&gt; in MySQL, PostgreSQL, or MongoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check your CSV encoding instantly using the free &lt;a href="https://csvtojsonconverter.com/csv-encoding-checker/" rel="noopener noreferrer"&gt;CSV Encoding Checker&lt;/a&gt; — it detects UTF-8, Windows-1252, UTF-16, and more directly in your browser without uploading your file anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Fix CSV Encoding
&lt;/h2&gt;

&lt;p&gt;Once you know the encoding, converting to UTF-8 is straightforward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: Use a Free Online Tool (No Code)
&lt;/h3&gt;

&lt;p&gt;The easiest way is to use the &lt;a href="https://csvtojsonconverter.com/csv-to-utf-8-converter/" rel="noopener noreferrer"&gt;CSV to UTF-8 Converter&lt;/a&gt;. It supports 14 encodings including Windows-1252, ISO-8859-1, Shift-JIS, GBK, and UTF-16. Everything runs in your browser — your file is never uploaded to a server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;your-file.csv&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;windows-1252&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;fixed-file.csv&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option 3: Node.js
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;iconv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;iconv-lite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your-file.csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;iconv&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;win1252&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fixed-file.csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;utf8&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option 4: Excel
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Excel → Data → From Text/CSV&lt;/li&gt;
&lt;li&gt;In the import wizard, change &lt;strong&gt;File Origin&lt;/strong&gt; to &lt;code&gt;65001: Unicode (UTF-8)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Save as CSV&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The UTF-8 BOM Problem
&lt;/h2&gt;

&lt;p&gt;Even after converting to UTF-8, Excel sometimes still shows garbled characters. This is because Excel on Windows needs a &lt;strong&gt;BOM (Byte Order Mark)&lt;/strong&gt; — a hidden 3-byte marker at the start of the file — to recognize UTF-8.&lt;/p&gt;

&lt;p&gt;When downloading from the &lt;a href="https://csvtojsonconverter.com/csv-to-utf-8-converter/" rel="noopener noreferrer"&gt;CSV to UTF-8 Converter&lt;/a&gt;, the file automatically includes a BOM so Excel opens it correctly every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference: Common Encoding Issues
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Broken text&lt;/th&gt;
&lt;th&gt;Original character&lt;/th&gt;
&lt;th&gt;Likely encoding&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;â€™&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;'&lt;/code&gt; (apostrophe)&lt;/td&gt;
&lt;td&gt;Windows-1252&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ã©&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;é&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Windows-1252&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Â£&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;£&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Windows-1252&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;?????&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Japanese/Chinese/Korean&lt;/td&gt;
&lt;td&gt;Wrong encoding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Invisible chars at start&lt;/td&gt;
&lt;td&gt;(none)&lt;/td&gt;
&lt;td&gt;UTF-16 BOM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Check your encoding with a &lt;a href="https://csvtojsonconverter.com/csv-encoding-checker/" rel="noopener noreferrer"&gt;CSV Encoding Checker&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Convert to UTF-8 using Python, Node.js, Excel, or an &lt;a href="https://csvtojsonconverter.com/csv-to-utf-8-converter/" rel="noopener noreferrer"&gt;online converter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Include a UTF-8 BOM if opening in Excel on Windows&lt;/li&gt;
&lt;li&gt;Always save exports as UTF-8 to avoid future issues&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;All the tools mentioned in this article are free and browser-based — your data never leaves your device. Check out the full &lt;a href="https://csvtojsonconverter.com/csv-tools/" rel="noopener noreferrer"&gt;CSV toolkit&lt;/a&gt; for more tools like CSV Validator, CSV Formatter, and CSV Duplicate Remover.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>csv</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
