none
C# UTF-8: WriteAllText and StrinBuilder RRS feed

  • Вопрос

  • Всем привет, проблема отображения русских букв в Result.txt с utf-8

    using System;
    using System.Linq;
    using System.Text;
    using HtmlAgilityPack;
    
    namespace DemoHtmlAgilityPack
    {
        class Program
        {
            static StringBuilder text = new StringBuilder();
    
            private static void Main(string[] args)
            {
    
                var client = new System.Net.WebClient();
    
                client.Encoding = Encoding.UTF8;
    
                var filename = System.IO.Path.GetTempFileName();
    
                string s = client.DownloadString("http://fastandclever.ru");
                System.IO.File.WriteAllText(@"C:\TEST\page.html", s);
    
                HtmlDocument doc = new HtmlDocument();
                doc.Load(@"C:\TEST\page.html");
    
                var root = doc.DocumentNode;
    
                var a_nodes = root.Descendants("a").ToList();
    
                Console.WriteLine(s);
                Console.ReadKey();
    
                foreach (var a_node in a_nodes)
                {
                    text.Append("LINK: " + a_node.GetAttributeValue("href", "") + "\nTEXT: " + a_node.InnerText + "\n\n");
                }
    
                System.IO.File.WriteAllText(@"C:\TEST\Result.txt", text.ToString(), Encoding.UTF8);
    
            }
        }
    }

    В cmd всё отображается корректно, но в файле Result.txt кракозябры.

    Заранее благодарю!

    12 февраля 2014 г. 7:38

Ответы

  • Оказывается, нужно было использовать кодировку по умолчанию при записи текста в файл (Encoding.Default).

    System.IO.File.WriteAllText(@"C:\TEST\Result.txt", text.ToString(), Encoding.Default);


    • Помечено в качестве ответа Osipov Evgeniy 12 февраля 2014 г. 9:05
    • Изменено Osipov Evgeniy 12 февраля 2014 г. 9:05
    12 февраля 2014 г. 9:05