JSON парсер не декодирует UTF-8 C++
Использовал juty. У него есть функция декодирования UTF-8:
string deserialize(const string& ref) {
string out = "";
for (size_t i=0;i<ref.length();i++) {
if (ref[i] == '\\' && i+1 < ref.length()) {
int plus = 2;
if (ref[i+1] == '\"') {
out += '"';
}else if (ref[i+1] == '\\') {
out += '\\';
}else if (ref[i+1] == '/') {
out += '/';
}else if (ref[i+1] == 'b') {
out += '\b';
}else if (ref[i+1] == 'f') {
out += '\f';
}else if (ref[i+1] == 'n') {
out += '\n';
}else if (ref[i+1] == 'r') {
out += '\r';
}else if (ref[i+1] == 't') {
out += '\t';
}else if(ref[i+1] == 'u' && i+5 < ref.length()) {
unsigned long long v = 0;
for (int j=0;j<4;j++) {
v *= 16;
if (ref[i+2+j] <= '9' && ref[i+2+j] >= '0') v += ref[i+2+j]-'0';
if (ref[i+2+j] <= 'f' && ref[i+2+j] >= 'a') v += ref[i+2+j]-'a'+10;
}
out += (char)v;
plus = 6;
}
i += plus-1;
continue;
}
out += ref[i];
}
return out;
}
В строке есть кирилица закодирована в \u*****.
Но на выходе я получаю различные несоответствующие символы (не крякозябры, но латиница в большом регистре, числа и текстовые символы вида < ; @ ).
В чем может быть проблема? Пробовал использовать RSjp но он просто выводит строку вместе с \u...