c++ windows utf-8 internationalization icu

c++ - UnicodeString a char*(UTF-8)



windows internationalization (3)

Estoy usando la biblioteca de ICU en C ++ en OS X. Todas mis cadenas son UnicodeStrings, pero necesito usar llamadas al sistema como fopen, fread, etc. Estas funciones toman const char * o char * como argumentos. He leído que OS X es compatible con UTF-8 internamente, por lo que todo lo que tengo que hacer es convertir Mi UnicodeString a UTF-8, pero no sé cómo hacerlo.

UnicodeString tiene una función de miembro toUTF8 (), pero devuelve un ByteSink. También encontré estos ejemplos: http://source.icu-project.org/repos/icu/icu/trunk/source/samples/ucnv/convsamp.cpp y leí sobre el uso de un convertidor, pero todavía estoy confundido . Cualquier ayuda sería muy apreciada.


llame a UnicodeString::extract(...) para extraer en un char *, pase NULL para que el convertidor obtenga el convertidor predeterminado (que está en el juego de caracteres que usará su sistema operativo).


Esto funcionará:

std::string utf8; uStr.toUTF8String(utf8);


Guía del usuario de la UCI> UTF-8 proporciona métodos y descripciones de cómo hacerlo.

La forma más sencilla de usar cadenas UTF-8 en las API UTF-16 es mediante los métodos C ++ icu::UnicodeString fromUTF8(const StringPiece &utf8) y toUTF8String(StringClass &result) . También hay toUTF8(ByteSink &sink) .

Y extract() no se prefiere ahora.

Nota: icu::UnicodeString tiene constructores, setTo() y extract() que toman un objeto convertidor o un nombre de juego de caracteres. Estos pueden usarse para UTF-8, pero no son tan eficientes ni convenientes como los fromUTF8() / toUTF8() / toUTF8String() mencionados anteriormente.