В настройках кодировки нигде нет, так что пирдется немного покодить. В сети мануалов на эту тему я не обнаружил, так что пришлось копаться самому. Ковыряться будем в исходниках, поэтому эти самые исходники нам нужны. Понадобится файл rapip.cpp, котрый и отвечает за протокол rapip в KDE. Покопался немного... Меня заинтересовала следующая строка:
code:
atom.m_str = QString::fromUcs2(entry->cFileName).ascii();
Сначала название файла декодируется из Ucs2 (юникод, используется в основном в sms-сообщениях, но как оказалось, еще и на покете), а потом кодируется в ascii. Нашел
описание этой функции, в котором обнаружил следующее:
code:
If a codec has been set using QTextCodec::setCodecForCStrings(),
it is used to convert Unicode to 8-bit char;
otherwise this function does the same as latin1().
Т.е. если не установить кодировку, то функция ascii() будет работать так же, как и функция latin1(), т.е. результат будет только латинскими буквами (а остальное знаками вопроса, отсюда и проблема, кодеры просто не предусмотрели кодировки). Теперь нам нужна функуция setCodecForCStrings() класса QTextCodec. В
описании есть несколько примеров, которые показывают, как надо работать с кодировками. Вернемся к rapip.cpp. В самом начале добавляем к прочим инклудам следующее:
code:
#include <qtextcodec.h>
Это даст возможность пользоваться классом QTextCodec. В самом конце файла в самое начало функции kdemain(int argc, char **argv) дописываем эти две строки:
code:
QTextCodec *codec = QTextCodec::codecForName("CP1251");
QTextCodec::setCodecForCStrings(codec);
Вместо CP1251 можно поставить KOI8-R, либо любую другую кодировку. Эти же действия необходимо проделать с raki.cpp. Компилируем, устанавливаем, подключаем девайс, открываем Konqueror, набираем rapip://. Вуаля! Русские буквы. Небольшое хирургическое вмешательство в код и все теперь работает.