2013-08-25 28 views
6

Tôi có một chuỗi ký tự "s" và sau đó File.WriteAllLines(path, s); và khi tôi mở tệp, æ & ø được thay thế bằng . Làm thế nào tôi có thể sửa lỗi này ?File.WriteAllLines không viết chữ æ, ø

+1

Bạn gặp sự cố mã hóa. Bắt đầu tại đây: http://www.joelonsoftware.com/articles/Unicode.html – driis

+1

"và khi tôi mở tệp" - với những gì bạn đang mở tệp? –

+0

Ngoài ra: bạn có nghĩa là 'WriteAllText'? thậm chí còn * biên dịch * như được đăng? –

Trả lời

8

Cả hai File.WriteAllLinesFile.WriteAllText sử dụng UTF-8 nếu không có Encoding được chỉ định. Cụ thể, đó là UTF-8 không có BOM (khá bình thường).

Vì vậy: hãy đọc tệp bằng trình chỉnh sửa hiểu UTF-8 hoặc chỉ định rõ ràng thay thế Encoding mà bạn muốn sử dụng.

+1

Có rất nhiều nỗi buồn trong bình luận "khá bình thường" đó. Tôi sẽ không bao giờ hiểu tại sao nó được coi là "bình thường". –

+0

Cảm ơn đã giúp tôi. –

+0

@user lại câu trả lời đã xóa của bạn: không sử dụng Encoding.Default –

1

Tôi đã giải quyết được sự cố: File.WriteAllLines(path, s, Encoding.UTF8);

+0

Tại sao bạn không chấp nhận câu trả lời của @ MarcGravell? Câu trả lời của anh ta là hoàn toàn chính xác. – SoonDead

+0

Vâng, đừng làm * điều đó *, nó chỉ làm trì hoãn sự đau khổ. Thay vào đó, hãy chuyển mã Encoding.UTF8. Giờ đây, Notepad có thể xác định đúng mã hóa, vì có thể nhiều chương trình khác xử lý các tệp văn bản ở bất kỳ đâu trên thế giới. –

+0

Điều gì khốn khổ nếu nó hoạt động? –

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