Sto provando a convertire un C++ std::string
in UTF-8 o std::wstring
senza perdere informazioni (si consideri una stringa che contiene caratteri non ASCII).Quale codifica usa std :: string.c_str()?
Secondo http://forums.sun.com/thread.jspa?threadID=486770&forumID=31:
Se la std :: stringa ha caratteri non-ASCII, è necessario fornire una funzione che converte dalla codifica UTF-8 [...]
Quale codifica utilizza std::string.c_str()
? Come posso convertirlo in UTF-8 o std::wstring
in modo multipiattaforma?
Quindi in sostanza non c'è modo per me di convertire std :: string senza conoscerne la codifica prima del tempo? Chiedo perché sto scrivendo una funzione API che contiene una stringa std ::. Immagino che la documentazione dovrà istruire gli utenti su quale formato passare. – Gili
@Gili, a destra: non è possibile convertire in modo affidabile una sequenza di byte in una codifica sconosciuta in UTF-8 (o qualsiasi altra cosa ;-). Vi consiglio di chiedere al chiamante di fornire i dati UTF-8 - la maggior parte delle altre codifiche non consente la codifica _every_ possibile stringa Unicode. Come dice @Naaff, ASCII è un caso speciale di UTF-8 (e ISO-8859- * e molte altre codifiche), quindi se questo è il tuo caso non c'è da preoccuparsi (una nota nei documenti che ricorda agli utenti di questo fatto potrebbe salvare _them_ preoccupazione;-). –
Buona risposta, grazie :) – Gili