Bạn sẽ nghĩ rằng điều này có sẵn, nhưng tôi đang gặp khó khăn khi tìm một hàm thư viện đơn giản sẽ chuyển đổi chuỗi C hoặc C++ từ ISO -8859-1 mã hóa thành UTF-8. Tôi đang đọc dữ liệu trong mã hóa 8-bit ISO-8859-1, nhưng cần phải chuyển đổi nó thành chuỗi UTF-8 để sử dụng trong cơ sở dữ liệu SQLite và cuối cùng là một ứng dụng Android.Chuyển đổi chuỗi ISO-8859-1 sang UTF-8 trong C/C++
Tôi đã tìm thấy một sản phẩm thương mại nhưng vượt quá ngân sách của tôi tại thời điểm này.
Có không có gì đơn giản về nó. Bạn có thể sử dụng thư viện ICU nguồn mở. –
Nếu bạn phải làm điều đó, thì mã đơn giản nhất là tạo trước một bảng gồm 128 ký tự UTF-8 tương ứng với các ký tự 8859-1 với bộ bit trên cùng. 128 8859-1 ký tự khác chưa được sửa đổi. Bằng cách đó, mã của bạn không phải hiểu Unicode chút nào. Ngoài ra, hãy cẩn thận sự khác biệt giữa ISO-8859-1 và Windows CP-1252. Sau này có một số ký tự phụ trong đó 8859-1 có khoảng trống (các điểm mã không sử dụng).Trừ khi bạn có nghĩa vụ phải xác nhận rằng đầu vào của bạn thực sự là ISO-8859-1, không có điểm nào không chấp nhận CP-1252, bởi vì bạn * sẽ * thấy nó bị sai lệch. –
@Steve: vì UTF-8 có độ dài thay đổi (trong trường hợp này, 1 hoặc 2 byte cho mỗi ký tự), bảng tra cứu không dễ sử dụng. Xem câu trả lời của tôi nên nhanh và đơn giản hơn rất nhiều. –