2011-11-19 20 views
10

tôi có mã này:Viết Unicode chuỗi trong một tập tin Sử dụng StreamWriter không làm việc

string s = "آ"; 
StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8); 
writer.WriteLine(s); 

nhưng khi tôi chạy nó tôi không thể nhìn thấy bất kỳ "آ" trong a.txt !! Không có chuỗi nào trong tệp a.txt! Nó trống rỗng! Vấn đề gì!?! Ai giúp tôi với???

+1

_do_ bạn thấy gì? Bạn đang sử dụng cái gì để mở tập tin? – Oded

+0

@Oded: Câu hỏi đã chỉnh sửa –

Trả lời

27

Bạn không bao giờ Close()StreamWriter.

Nếu bạn gọi writer.Close() khi bạn viết xong, bạn sẽ thấy ký tự.

Nhưng, vì nó thực hiện IDisposable bạn nên quấn việc tạo ra các StreamWriter trong một tuyên bố using:

using(StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8)) 
{ 
    writer.WriteLine(s); 
} 

này sẽ đóng dòng cho bạn.

+1

Ok Thanks.It đã hoạt động –

5

Bằng giao diện của nó, bạn không phải là Flush() ing hoặc Close() nhập StreamWriter trước khi bạn kết thúc đơn đăng ký của mình. StreamWriter sử dụng bộ đệm trong nội bộ cần được xóa trước khi bạn đóng ứng dụng hoặc StreamWriter vượt quá phạm vi nếu không, dữ liệu bạn đã ghi sẽ không được ghi vào đĩa.

Bạn có thể gọi Close() khi bạn đã hoàn tất - mặc dù thay vào đó, tôi khuyên bạn nên sử dụng câu lệnh using để đảm bảo rằng StreamWriter của bạn được xử lý đúng cách.

string s = "آ"; 

using (StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8)) 
{ 
    writer.WriteLine(s); 
} 
0

Vài lời khuyên:

  • bạn có thấy bất kỳ ký tự trong file văn bản ở vị trí của một trong những bạn mong đợi? Nếu không, bạn sẽ không xả và đóng luồng
  • StreamWriter sẽ có thể ghi unicode mà không cần phải chọn mã hóa, nhưng bạn có thể thử sử dụng mã hóa UTF32.

Kiểm tra How to: Write Text to a File

2

Hãy thử sử dụng File.WriteAllText("a.txt", s, Encoding.UTF8);.

0

Thực hiện theo, chức năng hoàn chỉnh cho xuất khẩu một listview vượt trội với characteres đặc biệt đúng:

private void Exportar() 
    { 
     Encoding encoding = Encoding.UTF8; 

     saveFileDialog1.Filter = "Arquivo Excel (*.xls)|*.xls"; 
     saveFileDialog1.FileName = "logs"; 
     saveFileDialog1.Title = "Exportar para Excel"; 
     StringBuilder sb = new StringBuilder(); 
     foreach (ColumnHeader ch in lstPesquisa.Columns) 
     { 
      sb.Append(ch.Text + "\t"); 
     } 
     sb.AppendLine(); 
     foreach (ListViewItem lvi in lstPesquisa.Items) 
     { 
      foreach (ListViewItem.ListViewSubItem lvs in lvi.SubItems) 
      { 
       if (lvs.Text.Trim() == string.Empty) 
       { 
        sb.Append(" "); 
       } 
       else 
       { 
        string ITEM = Regex.Replace(lvs.Text, @"\t|\n|\r", "");//remover novas linhas 
        sb.Append(ITEM + "\t"); 
       } 
      } 
      sb.AppendLine(); 
     } 
     DialogResult dr = saveFileDialog1.ShowDialog(); 
     if (dr == DialogResult.OK) 
     { 
      StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.UTF32); 
      sw.Write(sb.ToString()); 
      sw.Close(); 
     } 
    } 
Các vấn đề liên quan