В моей программе я получаю значение std::string
от другой функции, которая читает строки из разных источников, здесь строка всегда содержит не-ASCII символы.
Я отлаживаю программу с помощью Visual Studio.Иногда, когда содержимое строки выглядит корректно в отладчике VS , тогда следующий шаг в порядке (например, используйте эту строку в качестве каталога ввода и вывода).Но иногда содержимое строки выглядит некорректно , поэтому следующий шаг пошёл не так.
В настоящее время я использую QString
в качестве моста для преобразования строки "incorect" в "правильную" строку, кодкак ниже.
// get string from somewhere else, sometimes correct sometimes incorrect
string str = getString();
QString strQ = QString::fromStdString(str);
str = string(strQ.toLocal8bit);
Но иногда str является «правильным» уже перед преобразованием, в этом случае, если я преобразовываю его с помощью приведенного выше кода, он идет не так.
Так что я предполагаю, что проблема здеськак я могу узнать, имеет ли std::string
правильную кодировку?Потому что я не всегда могу судить об этом по глазам.
Да, кодирование - широко обсуждаемая тема переполнения стека, но я все еще не могу найти подходящее решение.
PS правильное строковое значение выглядит как 孙夏^4735
в VS отладчике, неправильное строковое значение выглядит как ????
。