2010-04-22 23 views
5

Delphi 2010Delphi Chuẩn trang Input Output Mã

Khi đọc từ tập tin sử dụng readLn thủ tục, theo mặc định tôi nhận được chuỗi unicode chuyển đổi từ mã trang 1251 (trang mã của cửa sổ).

Làm cách nào để thay đổi điều này và đọc từ tệp trong trang mã khác, vào năm 1252 hoặc UTF16?

Trả lời

0

Bạn có thể sử dụng TStreamReader - bạn có thể chỉ định mã hóa nào bạn muốn đọc khi xây dựng nó.

Ví dụ: TStreamReader.Create(FileName, TEncoding.UTF8); sẽ tạo TStreamReader có thể được sử dụng để đọc văn bản từ tệp được chỉ định trong FileName, sử dụng UTF-8 làm mã hóa.

+0

-1. Có hai khía cạnh cho câu hỏi mà câu trả lời này không giải quyết. Một là nguồn của đầu vào là stdin, không phải là tệp đĩa. Cách khác là mã hiện tại sử dụng 'readln', không phải luồng. (Nếu đó là vì 'readln' luôn sử dụng trang mã Windows, thì tốt thôi, nhưng hãy nói như vậy, nếu không thì có vẻ như bạn đã bỏ qua chi tiết của câu hỏi.) –

2

Không sử dụng ReadLn/WriteLn cho mã mới. Theo đề xuất của Michael Madsen, hãy sử dụng TStreamReader trong SysUtils.