JNIEXPORT jboolean JNICALL Java_isImage
(JNIEnv * env, jobject obj, jstring file)
{
const char * filename = env->GetStringUTFChars(file, NULL);
return theApp.isImage(filename);
}
Перекодировка символов
вот код
Код:
из Java передаю строку в MFC DLL, затем стандартными функциями получаю строку типа const char* и вызываю функцию, которая должна прочитать файл, путь к которому содержится в строке. Все работает, пока не появляется в пути каталог или файл с русскими буквами. Пробовал отобразить строку с помощью AfxMessageBox, отображаются кракозябры.
Расскажите, как мне перекодировать строку, чтобы C++ ее понимал.
Прбовал так:
Код:
WCHAR wszFilename[400];
char* fname=new char[400];
int res=MultiByteToWideChar( CP_UTF8, 0, filename,
strlen(filename)+1, wszFilename, sizeof(wszFilename)/sizeof(wszFilename[0]) );
AfxMessageBox(wszFilename);
WideCharToMultiByte(866,0,wszFilename,-1,fname,400,NULL,NULL);
AfxMessageBox(fname);
char* fname=new char[400];
int res=MultiByteToWideChar( CP_UTF8, 0, filename,
strlen(filename)+1, wszFilename, sizeof(wszFilename)/sizeof(wszFilename[0]) );
AfxMessageBox(wszFilename);
WideCharToMultiByte(866,0,wszFilename,-1,fname,400,NULL,NULL);
AfxMessageBox(fname);
В этом случае первый AfxMessageBox показывает правильную строку, а второй - просто квадратики.
Подскажите, что делать.