- Use kasciistricmp() instead of converting prefCharset to lower case.

- Check the codec returned by KMMsgBase::codecForName() for being NULL and fallback to kmkernel->networkCodec() in this case.

svn path=/trunk/KDE/kdepim/; revision=656744
wilder-work
Ingo Klcker 19 years ago
parent 13901d4854
commit 00300e396a
  1. 18
      kmmsgbase.cpp

@ -395,18 +395,22 @@ QString KMMsgBase::decodeRFC2047String( const QByteArray& aStr,
}
if ( str.find( "=?" ) < 0 ) {
if ( !prefCharset.isEmpty() ) {
kAsciiToLower(prefCharset.data());
if ( prefCharset == "us-ascii" ) {
QByteArray charsetName;
if ( ! prefCharset.isEmpty() ) {
if ( kasciistricmp( prefCharset.data(), "us-ascii" ) ) {
// isn`t this foolproof?
return KMMsgBase::codecForName( "utf-8" )->toUnicode( str );
charsetName = "utf-8";
} else {
return KMMsgBase::codecForName( prefCharset )->toUnicode( str );
charsetName = prefCharset;
}
} else {
return KMMsgBase::codecForName( GlobalSettings::self()->
fallbackCharacterEncoding().latin1() )->toUnicode( str );
charsetName = GlobalSettings::self()->fallbackCharacterEncoding().latin1();
}
const QTextCodec *codec = KMMsgBase::codecForName( charsetName );
if ( ! codec ) {
codec = kmkernel->networkCodec();
}
return codec->toUnicode( str );
}
QString result;

Loading…
Cancel
Save