У меня есть строка в кодировке KOI8-R, она передается как argv, поэтому изначально это объект char *. К сожалению, использование этой устаревшей кодировки на данном этапе невозможно. Системный языковой стандарт - KOI8-R, и исходный код также находится в этой кодировке.
Строка - это путь к файлу, в котором некоторые каталоги имеют имена в KOI8-R. Мне нужно открыть файл для записи с использованием QFile. Однако open () всегда возвращает false независимо от того, что я пытаюсь.
Мне нужно преобразовать путь в QString, чтобы передать его конструктору QFile, однако простое преобразование, QString :: fromLocal8Bit () и QFile :: decodeName (), похоже, не помогает.
char* filename; // This is a KOI8-R string
QFile f(QString::fromLocal8Bit(filename));
// QFile f(QFile::decodeName(filename)) doesn't work too
f.open(QIODevice::WriteOnly | QIODevice::Text); // returns false
Единственный способ заставить его работать, это с помощью объектов ofstream из STL, передача char * конструктору ofstream работает нормально, однако использование QFile гораздо предпочтительнее, так как приложение находится в QT.