Разные длины одинаковых строк в C# WinForms

public MainWindow(string filename)
{
    InitializeComponent();
    if(filename != null && File.Exists(filename))
    {
        FilePath = filename;
        FileText.Text = File.ReadAllText(FilePath);
        DefaultFileText = FileText.Text;
        MessageBox.Show((DefaultFileText.Length == FileText.TextLength).ToString()); // output: false
    }
}

Не всегда, но бывает такое, что длины не совпадают, хотя одна строка равна другой. Как исправить?


Ответы (2 шт):

Автор решения: Alexander Petrov

Исходный код: TextLength.

Там комментарий:

Note: Currently Microsoft does not fully support surrogates - VSW#327396. If the text contains surrogate characters this property may return incorrect values.

Очевидно, в вашем тексте содержатся суррогатные символы.

→ Ссылка
Автор решения: Сергей Машенцев

Разобрался с суррогатными символами, в своем блокноте переписал сохранение файла,указав кодировку при сохранении UTF-8. Сохранил проблемный файл с помощью вышеуказанной кодировки. Пример: File.WriteAllText(FilePath, FileText.Text, Encoding.UTF8);

→ Ссылка