---
title: "How do you handle encoding when reading or writing to text files?"  
description: "How do you handle encoding when reading or writing to text files?"  
author: "ICSM Computer"  
published: 2025-05-07  
updated: 2025-06-02  
canonical: https://www.mindstick.com/forum/161586/how-do-you-handle-encoding-when-reading-or-writing-to-text-files  
category: "c#"  
tags: ["c#", "file handling"]  
reading_time: 2 minutes  

---

# How do you handle encoding when reading or writing to text files?

How do you [handle](https://www.mindstick.com/articles/311004/suede-skillet-handle-cover) [encoding](https://www.mindstick.com/interview/752/how-is-encoding-handled-in-ajax) when [reading or writing](https://www.mindstick.com/forum/158632/explain-how-to-handle-an-ioexception-when-reading-or-writing-files-in-an-asp-dot-net-mvc-project) to [text](https://www.mindstick.com/blog/301635/did-people-reinvent-texting-to-express-the-full-range-of-emotions) [files](https://www.mindstick.com/articles/23302/the-importance-and-advantage-of-keeping-your-important-files-on-the-cloud)?

## Replies

### Reply by ICSM Computer

Handling **encoding** correctly when [reading](https://www.mindstick.com/articles/126273/books-commonly-found-on-college-reading-lists) or [writing](https://www.mindstick.com/articles/12997/5-essential-tips-on-resume-writing-for-business-analysts) text files in .NET is critical for ensuring data integrity, especially with non-ASCII characters or cross-platform compatibility.

## ✅ Key Points on Handling Encoding

### 1. Specify Encoding Explicitly

Always **specify the encoding** when reading or writing, unless you're sure the default (`UTF-8 without BOM`) works for your scenario.

## Writing Text with Encoding

### Using `File.WriteAllText`:

```cs
string text = "Hello, world — 你好，世界";
File.WriteAllText("file.txt", text, Encoding.UTF8); // or Encoding.Unicode, etc.
```

### Using `StreamWriter`:

```cs
using (var writer = new StreamWriter("file.txt", false, Encoding.UTF8))
{
    writer.WriteLine("Some text");
}
```

#### Common Encodings:

1. `Encoding.UTF8` – Universal, default for many apps
2. `Encoding.Unicode` – UTF-16 LE
3. `Encoding.ASCII` – 7-bit ASCII only (loses non-ASCII characters)
4. `Encoding.GetEncoding("ISO-8859-1")` – Western European (legacy)
5. `new UTF8Encoding(encoderShouldEmitUTF8Identifier: true)` – With BOM

## Reading Text with Encoding

### Using `File.ReadAllText`:

```cs
string content = File.ReadAllText("file.txt", Encoding.UTF8);
```

### Using `StreamReader`:

```cs
using (var reader = new StreamReader("file.txt", Encoding.UTF8))
{
    string content = reader.ReadToEnd();
}
```

### Detecting Encoding Automatically (BOM-based):

```cs
using (var reader = new StreamReader("file.txt", detectEncodingFromByteOrderMarks: true))
{
    string content = reader.ReadToEnd();
}
```

> If you're unsure about the encoding, setting `detectEncodingFromByteOrderMarks: true` can help detect UTF-8/UTF-16 with BOM.

## Example: Writing and Reading Unicode Text

```cs
string text = "Text with emoji and Chinese 中文";

// Write with UTF-8
File.WriteAllText("unicode.txt", text, Encoding.UTF8);

// Read it back
string readBack = File.ReadAllText("unicode.txt", Encoding.UTF8);
```

## Common Mistakes

| Mistake | Problem |
| --- | --- |
| Not specifying encoding | May cause unreadable characters on other systems or in other programs |
| Using `Encoding.ASCII` for Unicode text | Non-ASCII characters get lost or replaced |
| Writing UTF-8 text without BOM when BOM is expected (e.g., in Notepad) | File may appear garbled or empty |
| Reading UTF-16 with UTF-8 | Results in mojibake (garbled text) |


---

Original Source: https://www.mindstick.com/forum/161586/how-do-you-handle-encoding-when-reading-or-writing-to-text-files

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
