Cree que esto estaría disponible, pero me está costando encontrar una función de biblioteca simple que convierta una cadena C o C++ de ISO -8859-1 que codifica a UTF-8. Estoy leyendo datos que están en codificación ISO-8859-1 de 8 bits, pero necesito convertirlos a una cadena UTF-8 para utilizar en una base de datos SQLite y, finalmente, una aplicación de Android.Convierta cadenas ISO-8859-1 a UTF-8 en C/C++
Encontré un producto comercial, pero está más allá de mi presupuesto en este momento.
Hay nada simple al respecto. Puede usar la biblioteca de ICU de código abierto. –
Si tiene que hacerlo, el código más simple es pregenerar una tabla de los 128 caracteres (UTF-8) correspondientes a los caracteres 8859-1 con el bit superior establecido. Los otros 128 8859-1 caracteres no están modificados. De esta forma, su código no tiene que entender Unicode en absoluto. Además, tenga cuidado con la diferencia entre ISO-8859-1 y Windows CP-1252. Este último tiene algunos caracteres adicionales donde 8859-1 tiene espacios (puntos de código no utilizados).A menos que se suponga que debe validar que su entrada realmente es ISO-8859-1, no tiene sentido no aceptar CP-1252, porque * verá * que está mal etiquetada. –
@Steve: dado que UTF-8 es de longitud variable (en este caso, 1 o 2 bytes por carácter), una tabla de búsqueda no es tan fácil de usar. Vea mi respuesta, que debería ser igual de rápida y mucho más simple. –