| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > преобразование кодировки символов |
| Автор: speed0ver1 7.8.2008, 16:40 | ||||
| У меня такая проблема: вот код
из Java передаю строку в MFC DLL, затем стандартными функциями получаю строку типа const char* и вызываю функцию, которая должна прочитать файл, путь к которому содержится в строке. Все работает, пока не появляется в пути каталог или файл с русскими буквами. Пробовал отобразить строку с помощью AfxMessageBox, отображаются кракозябры. Расскажите, как мне перекодировать строку, чтобы C++ ее понимал. Прбовал так:
В этом случае первый AfxMessageBox показывает правильную строку, а второй - просто квадратики. Подскажите, что делать. |
| Автор: xvr 8.8.2008, 11:53 | ||||
GetStringUTFChars возвращает строку в UTF, для русских букв ее придется конвертировать в Unicode а затем обратно в русскую кодовую страницу, которая кстати равна 1251 а не 866. Используй метод GetStringChars для получения сразу Unicode и соотвествующую Unicode версию функции работы с файлом. Или используй комбинацию MultiByteToWideChar(CP_UTF8) и WideCharToMultiByte(1251) (Кодировка 866 - для консоли) |
| Автор: speed0ver1 11.8.2008, 10:10 |
| Комбинацию MultiByteToWideChar(CP_UTF8) и WideCharToMultiByte(1251) использовал. Страницу 866 поставил уже когда не заработало с 1251. Не помогает. Файловую функцию, работающую с Unicode, использовать не могу, поскольку функции работы с файлами в модуле, который для меня закрыт. Может еще как-то можно поправить ситуацию? |