2012-12-13 44 views
6

Tôi đang đọc một tệp (từng dòng) đầy đủ các ký tự tiếng Thụy Điển như äåö nhưng làm cách nào tôi có thể đọc và lưu các chuỗi bằng các ký tự tiếng Thụy Điển. Đây là mã của tôi và tôi đang sử dụng mã hóa UTF8:Cách đọc các ký tự tiếng Thụy Điển đúng từ một tệp txt

TextReader tr = new StreamReader(@"c:\testfile.txt", System.Text.Encoding.UTF8, true); 
tr.ReadLine() //returns a string but Swedish characters are not appearing correctly... 
+0

Điều gì không hoạt động chính xác? – Jeroen

+0

chuỗi được trả về bởi 'tr.ReadLine()' không hiển thị các ký tự tiếng Thụy Điển. – Geek

+0

Chuỗi C# luôn được mã hóa UTF-16. Bằng cách chuyển mã hóa UTF-8 cho StreamReader của bạn, đọc một dòng sẽ trả về một đối tượng chuỗi UTF-16 được mã hóa đúng cách. Nó bây giờ chỉ phụ thuộc vào cách bạn xuất chuỗi của bạn ... – CodeZombie

Trả lời

12

Bạn cần thay đổi System.Text.Encoding.UTF8 thành System.Text.Encoding.GetEncoding (1252). Xem bên dưới

 System.IO.TextReader tr = new System.IO.StreamReader(@"c:\testfile.txt", System.Text.Encoding.GetEncoding(1252), true); 
     tr.ReadLine(); //returns a string but Swedish characters are not appearing correctly 
+0

Tuyệt vời! Cảm ơn! – Geek

0

I figured it out bản thân mình tức là System.Text.Encoding.Default sẽ hỗ trợ nhân vật Thụy Điển.

TextReader tr = new StreamReader(@"c:\testfile.txt", System.Text.Encoding.Default, true); 
+0

Tại sao bạn đặt mã hóa đầu vào thành UTF-8? – CodeZombie

+1

@Geek Có nếu ngôn ngữ mặc định của bạn là dành cho ngôn ngữ Thụy Điển thì có, nó sẽ hoạt động. Nếu không thấy bài đăng của tôi, trang này cung cấp cho bạn trang mã cho nó. – Sorceri

+1

Nó không liên quan gì đến việc hỗ trợ ngôn ngữ hoặc ký tự, cả UTF-8 và CP1252 đều hỗ trợ ngôn ngữ Thụy Điển. Nó phải làm với mã hóa tập tin, đó là CP1252. Bạn luôn phải biết mã hóa (thay vì ngôn ngữ) của tệp để đọc nó đúng cách. – Esailija

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