Można by sądzić, że będzie to łatwo dostępne, ale ciężko jest znaleźć prostą funkcję biblioteki, która konwertuje ciąg znaków C lub C++ z ISO -8859-1 kodowanie do UTF-8. Czytam dane w 8-bitowym kodowaniu ISO-8859-1, ale trzeba je przekonwertować na ciąg znaków UTF-8, aby można go było użyć w bazie danych SQLite, a także w aplikacji na Androida.Konwertuj ciągi znaków ISO-8859-1 na kodowanie UTF-8 w języku C/C++
Znalazłem jeden produkt komercyjny, ale obecnie jest to poza moim budżetem.
Jest nic prostego w tym. Możesz użyć biblioteki ICU z otwartym źródłem. –
Jeśli musisz to zrobić, najprostszym kodem jest wstępne wygenerowanie tabeli ze 128 (lub podobnymi) znakami UTF-8 odpowiadającymi 8859-1 znakom z ustawionym górnym bitem. Pozostałe 128 znaków 8859-1 jest niezmodyfikowanych. W ten sposób twój kod wcale nie musi rozumieć kodu Unicode. Uważaj także na różnicę między ISO-8859-1 i Windows CP-1252. Ten ostatni ma dodatkowe znaki, w których 8859-1 ma przerwy (nieużywane punkty kodowe).O ile nie powinieneś potwierdzać, że twoje wejście jest w rzeczywistości ISO-8859-1, nie ma sensu nie akceptować CP-1252, ponieważ * zobaczysz *, że jest on nieprawidłowo oznakowany. –
@Steve: ponieważ UTF-8 ma zmienną długość (w tym przypadku 1 lub 2 bajty na znak), tablica odnośników nie jest tak łatwa w użyciu. Zobacz moją odpowiedź, która powinna być równie szybka i znacznie prostsza. –