c++ и KOI8 (setlocale)

Рейтинг: 3Ответов: 1Опубликовано: 10.06.2011

Привет всем. Нужно открыть файл, который закодирован KOI8-R. Пробовал

#include<locale.h>
setlocale(LC_ALL, "ru_RU.KOI8-R");
setlocale(LC_ALL, "ru_RU.KOI8R");
setlocale(LC_ALL, "ru_RU.koi8-r");
setlocale(LC_ALL, "ru-RU.koi8-r");
//и тд

Ни один из вариантов не работает, все возвращают NULL. Нужно кросс платформенное решение, т.е. чтобы код компилировался и на Linux, и на Windows.

Ответы

▲ 2Принят

В дополнение про setlocale() и KOI-8.

В винде проходит вызов setlocale(LC_ALL,"Russian_Russia.20866"); для установки КОИ8.

См. ПанельУправления->ЯзыкиРегиональныеСтандарты->Дополнительно [Кодовые страницы таблиц преобразования].

// char *pl = setlocale (LC_ALL,"Russian_Russia.20866"); // koi8-r
// char *pl = setlocale (LC_ALL,"Russian_Russia.65001"); // utf-8
// char *pl = setlocale (LC_ALL,"Russian_Russia.1251"); // cp-1251
// char *pl = setlocale (LC_ALL,"Russian_Russia.28595"); // iso8859-5
char *pl = setlocale (LC_ALL,"Russian_Russia.866"); // cp-866