--- ark/sevenzip.cpp.orig 2008-01-15 02:22:00 +0300 +++ ark/sevenzip.cpp 2008-01-15 02:43:43 +0300 @@ -232,7 +232,9 @@ void SevenZipArch::unarchFileInternal( ) if ( !m_password.isEmpty() ) *kp << "-p" + m_password; - *kp << m_filename; + QTextCodec *codec = QTextCodec::codecForLocale(); + + *kp << codec->fromUnicode(m_filename); // if the file list is empty, no filenames go on the command line, // and we then extract everything in the archive. @@ -241,11 +243,11 @@ void SevenZipArch::unarchFileInternal( ) QStringList::Iterator it; for ( it = m_fileList->begin(); it != m_fileList->end(); ++it ) { - *kp << (*it); + *kp << codec->fromUnicode(*it); } } - *kp << "-o" + m_destDir ; + *kp << "-o" + codec->fromUnicode(m_destDir) ; connect( kp, SIGNAL( receivedStdout(KProcess*, char*, int) ), SLOT( slotReceivedOutput(KProcess*, char*, int) ) ); @@ -263,11 +265,13 @@ void SevenZipArch::unarchFileInternal( ) bool SevenZipArch::processLine( const QCString& _line ) { - QCString line( _line ); + QString line; QString columns[ 11 ]; unsigned int pos = 0; int strpos, len; - + QTextCodec *codec = QTextCodec::codecForLocale(); + line = codec->toUnicode( _line ); + columns[ 0 ] = line.right( line.length() - m_nameColumnPos); line.truncate( m_nameColumnPos );