Какая кодировка использует std::string.c_str()?
Я пытаюсь преобразовать С++ std::string
в UTF-8 или std::wstring
без потери информации (рассмотрим строку, содержащую символы, отличные от ASCII).
Согласно http://forums.sun.com/thread.jspa?threadID=486770&forumID=31:
Если std::string имеет символы, отличные от ASCII, вы должны предоставить функцию, которая преобразует вашу кодировку в UTF-8 [...]
Какую кодировку использует std::string.c_str()
? Как преобразовать его в UTF-8 или std::wstring
кросс-платформенным способом?
Ответы
Ответ 1
std::string
сам по себе не использует кодировку - он вернет байты, которые вы вложили в него. Например, эти байты могут использовать кодировку ISO-8859-1... или любую другую, на самом деле: информация о кодировке просто отсутствует - вы должны знать, откуда берутся байты!
Ответ 2
std::string
содержит любую последовательность байтов, поэтому кодирование зависит от вас. Вы должны знать, как он закодирован. Однако, если вы не знаете, что это что-то другое, возможно, это просто ASCII. В этом случае он уже совместим с UTF-8.