Ich muss eine Passworteingabe nach UTF-16LE konvertieren bevor ich einen MD5 digest daraus machen kann. Aber Irgendwie habe ich ein Verständnis Problem was die Zeichenketten Konvertierung betrifft, Ich bekomme einen leeren Ausgabepuffer zurück.
Wo habe ich den hier den Fehler?
PHP-Code:
  // Setze zunächst einmal wieder zu einem normalen Unicode-Zeichencode
  // Mein System verwendet UTF-8
  
QTextCodeccodec QTextCodec::codecForLocale ();
  
QByteArray realm codec->toUnicode textValue().toAscii() ).toAscii();
  
// g++4* kompatible
  
size_t invalid = -1;
  
// initialisiere iconv
  
iconv_t cd iconv_open "UTF-16LE""UTF-8" );
  
// nehme die bytes von QByteArray
  
size_t inbytesleft realm.size();
  
// convertiere QByteArray nach char*
  
charinbuf realm.data();
  
// setze den ausgabe Puffer von 8 auf 16 rauf und hänge den term an
  
size_t outbytesleft = ( realm.size() * ) + 1;
  
// erstelle den ausgabe Puffer
  
charoutbuf = new char[outbytesleft];
  
// starte konvertieren
  
while ( inbytesleft )
  {
    if ( 
iconv cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft ) == invalid )
    {
      
qWarning "converting characters failed" );
      
iconv_close cd );
      
delete[] outbuf;
      break;
    }
  }
  
iconv_close cd );

  
// Debuggen und das ganze wieder zurück
  
std::cout << "Größe des Ausgabe Puffers:" << strlen outbuf ) << std::endl;
  
qDebug() << Q_FUNC_INFO << QTextCodec::codecForName "UTF-16LE" )->toUnicode outbuf );

  return 
realm