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...


Ответы (0 шт):