How do I write out a text file in C# with a code page other than UTF-8?

后端 未结 5 431
一生所求
一生所求 2020-11-30 03:07

I want to write out a text file.

Instead of the default UTF-8, I want to write it encoded as ISO-8859-1 which is code page 28591. I have no idea how to do this...

相关标签:
5条回答
  • 2020-11-30 03:21

    You can have something like this

     switch (EncodingFormat.Trim().ToLower())
        {
            case "utf-8":
                File.WriteAllBytes(fileName, ASCIIEncoding.Convert(ASCIIEncoding.ASCII, new UTF8Encoding(false), convertToCSV(result, fileName)));
                break;
            case "utf-8+bom":
                File.WriteAllBytes(fileName, ASCIIEncoding.Convert(ASCIIEncoding.ASCII, new UTF8Encoding(true), convertToCSV(result, fileName)));
                break;
            case "ISO-8859-1":
                File.WriteAllBytes(fileName, ASCIIEncoding.Convert(ASCIIEncoding.ASCII, Encoding.GetEncoding("iso-8859-1"), convertToCSV(result, fileName)));
                break;
            case ..............
        }
    
    0 讨论(0)
  • 2020-11-30 03:30

    Wrap your StreamWriter with FileStream, this way:

    string fileName = "test.txt";
    string textToAdd = "Example text in file";
    Encoding encoding = Encoding.GetEncoding("ISO-8859-1"); //Or any other Encoding
    
    using (FileStream fs = new FileStream(fileName, FileMode.CreateNew))
    {
        using (StreamWriter writer = new StreamWriter(fs, encoding))
        {
            writer.Write(textToAdd);
        }
    }
    

    Look at MSDN

    0 讨论(0)
  • 2020-11-30 03:33

    Simple!

    System.IO.File.WriteAllText(path, text, Encoding.GetEncoding(28591));
    
    0 讨论(0)
  • 2020-11-30 03:39

    Change the Encoding of the stream writer. It's a property.

    http://msdn.microsoft.com/en-us/library/system.io.streamwriter.encoding.aspx

    So:

    sw.Encoding = Encoding.GetEncoding(28591);
    

    Prior to writing to the stream.

    0 讨论(0)
  • 2020-11-30 03:40
    using System.IO;
    using System.Text;
    
    using (StreamWriter sw = new StreamWriter(File.Open(myfilename, FileMode.Create), Encoding.WhateverYouWant))
    {    
        sw.WriteLine("my text...");     
    }
    

    An alternate way of getting your encoding:

    using System.IO;
    using System.Text;
    
    using (var sw  = new StreamWriter(File.Open(@"c:\myfile.txt", FileMode.CreateNew), Encoding.GetEncoding("iso-8859-1"))) {
        sw.WriteLine("my text...");             
    }
    

    Check out the docs for the StreamWriter constructor.

    0 讨论(0)
提交回复
热议问题