2011-11-11 22 views
17

tôi không thể đọc những ký tự đặc biệt tôi đã cố gắng như thế nàylàm thế nào để đọc ký tự đặc biệt như E, A và những người khác trong C#

1 cách #

string xmlFile = File.ReadAllText(fileName); 

Cách 2 #

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); 
StreamReader r = new StreamReader(fs); 
string s = r.ReadToEnd(); 

Nhưng cả hai câu lệnh đều không hiểu các ký tự đặc biệt đó. Tôi nên đọc như thế nào?

CẬP NHẬT ###

Tôi cũng thử tất cả các mã hóa với

string xmlFile = File.ReadAllText(fileName, Encoding.); 

nhưng vẫn không hiểu những ký tự đặc biệt.

+1

làm thế nào để bạn biết chương trình của bạn không chấp nhận những ký tự? bạn đang làm gì với họ nếu bạn đang nhổ chúng ra bàn điều khiển thì có thể là thiết bị đầu cuối của bạn không hiển thị chính xác chúng, nhưng bạn đang đọc chúng tốt. – mpen

+1

Điều gì không được đọc chính xác? Hiển thị một dòng văn bản mẫu có dữ liệu được đọc sai, kết quả bạn quan sát, kết quả bạn mong đợi và cách bạn thực hiện quan sát. –

Trả lời

40

Không có những điều như "nhân vật đặc biệt". Những gì có khả năng được mở rộng ascii ký tự từ tập latin1 (iso-8859-1). Bạn có thể đọc những bằng cách cung cấp mã hóa một cách rõ ràng để người đọc dòng (nếu không nó sẽ giả UTF8)

using (StreamReader r = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1"))) 
    r.ReadToEnd(); 
+1

Cảm ơn rất nhiều. Bạn đã giải quyết được sự cố của mình. – kevin

+2

string [] lines = File.ReadAllLines (tên tệp, System.Text.Encoding.GetEncoding ("iso-8859-1")); cũng hoạt động hoàn hảo –

2

Bạn phải nói với các StreamReader mà bạn đang đọc Unicode như vậy

StreamReader sr = new StreamReader(stream, Encoding.Unicode); 

Nếu tập tin của bạn là của một số khác encoding, specify it as the second parameter

3
StreamReader sr = new StreamReader(stream, Encoding.UTF8) 
+0

StreamReader sử dụng UTF8 theo mặc định. –

+0

vâng, tôi biết điều đó. nhưng tôi đã thử đọc một văn bản tập tin có chứa dấu và vv và trả về nó một cái gì đó như: ?? thay vì 'á' chẳng hạn. Tôi đặt mã hóa thành utf8 (như được đề xuất ở đây) và điều này hoạt động tốt. – Kakashi

+0

hmm Tôi không chắc ... Tôi sẽ phải xem mã và tệp thực tế để xem những gì đang diễn ra ở đó. Nhưng theo http://msdn.microsoft.com/en-us/library/f2ke0fzy.aspx StreamREader init với mã hóa UTF8 theo mặc định và đã xảy ra trường hợp như tôi đã thử. –

Các vấn đề liên quan