Ứng dụng Win32 Delphi của tôi phân tích các tệp văn bản được tạo bởi các ứng dụng khác không hỗ trợ Unicode. Vì vậy, các ứng dụng của tôi cần đọc và viết các chuỗi ansi, nhưng tôi muốn cung cấp một trải nghiệm người dùng bản địa hóa tốt hơn thông qua việc sử dụng Unicode trong GUI. Ứng dụng này thực hiện một số phân tích chuỗi ký tự theo ký tự khá nặng trong các đối tượng có nguồn gốc từ TList.Chuyển sang Unicode cho ứng dụng xử lý các tệp văn bản
Khi đưa ra việc chuyển đổi sang một giao diện Unicode trong đi từ Delphi 2006 đến Delphi 2009, tôi nên có kế hoạch để:
- đi hoàn toàn Unicode trong ứng dụng của tôi, với ngoại lệ của AnsiString tập tin I/O?
- đóng gói mã xử lý ansistrings (tức là tiếp tục xử lý chúng dưới dạng ansistrings nội bộ) từ một ứng dụng Unicode khác.
Tôi nhận thấy phản hồi thực sự chi tiết sẽ đòi hỏi một lượng lớn mã của tôi - tôi chỉ hỏi về những lần hiển thị từ những người đã chuyển đổi này và vẫn phải làm việc với tệp văn bản thuần túy. Nơi để đặt rào cản giữa ansistrings và Unicode?
CHỈNH SỬA: nếu # 1, có đề xuất nào để ánh xạ chuỗi Unicode cho đầu ra ansistring không? Tôi đoán rằng việc chuyển đổi các chuỗi đầu vào sẽ được tự động bằng cách sử dụng tstringlist.loadfromfile (ví dụ).
Tuyệt vời - cách bạn giải thích điều này sẽ giúp ích rất nhiều. Dựa trên sự hiểu biết của tôi, đầu vào thực sự sẽ là các tệp văn bản UTF-8 (ASCII thẳng) và bây giờ có ý nghĩa rằng tôi có thể sử dụng các chuỗi Unicode được mã hóa UTF-8 trong nội bộ. – Argalatyr
Nó không phải là đơn giản để sử dụng UTF-8 chuỗi mã hóa nội bộ, vì vậy tôi không khuyên bạn nên điều này như là một chính sách. Bạn sẽ thấy rằng ngay sau khi bạn bắt đầu sử dụng Stringlists và các hàm chuỗi VCL hữu ích hơn, hàm bạn cần hoặc sẽ không có hoặc sử dụng nó sẽ liên quan đến hai chuyển đổi mã hóa. – frogb
@frogb: Thật vậy, như một chính sách nó sẽ là một ý tưởng tồi. Điều này cần được quyết định theo từng trường hợp cụ thể. Tuy nhiên, nếu không biết mã nào thì nó không thể nói các hàm chuỗi VCL nào là cần thiết, và các biến đổi mã hóa nào sẽ gây ra. – mghie