@@ -216,7 +216,8 @@ PluginFinishType LibzipPlugin::extractFiles(const QList<FileEntry> &files, const
216216 return PFT_Cancel;
217217 } else {
218218 setPassword (query.password ());
219- zip_set_default_password (archive, m_strPassword.toUtf8 ().constData ());
219+ QByteArray passwordBytes = passwordUnicode (m_strPassword, 0 );
220+ zip_set_default_password (archive, passwordBytes.constData ());
220221 lastNeedPasswordIndex = i;
221222 i--;
222223 }
@@ -269,7 +270,8 @@ PluginFinishType LibzipPlugin::extractFiles(const QList<FileEntry> &files, const
269270 return PFT_Cancel;
270271 } else {
271272 setPassword (query.password ());
272- zip_set_default_password (archive, m_strPassword.toUtf8 ().constData ());
273+ QByteArray passwordBytes = passwordUnicode (m_strPassword, 0 );
274+ zip_set_default_password (archive, passwordBytes.constData ());
273275 i--;
274276 }
275277 } else {
@@ -668,12 +670,13 @@ bool LibzipPlugin::writeEntry(zip_t *archive, const QString &entry, const Compre
668670 // 设置压缩的加密算法
669671 if (options.bEncryption && !options.strEncryptionMethod .isEmpty ()) { // ReadOnlyArchiveInterface::password()
670672 int ret = 0 ;
673+ QByteArray passwordBytes = passwordUnicode (options.strPassword , 0 );
671674 if (QLatin1String (" AES128" ) == options.strEncryptionMethod ) {
672- ret = zip_file_set_encryption (archive, uindex, ZIP_EM_AES_128, options. strPassword . toUtf8 () .constData ());
675+ ret = zip_file_set_encryption (archive, uindex, ZIP_EM_AES_128, passwordBytes .constData ());
673676 } else if (QLatin1String (" AES192" ) == options.strEncryptionMethod ) {
674- ret = zip_file_set_encryption (archive, uindex, ZIP_EM_AES_192, options. strPassword . toUtf8 () .constData ());
677+ ret = zip_file_set_encryption (archive, uindex, ZIP_EM_AES_192, passwordBytes .constData ());
675678 } else if (QLatin1String (" AES256" ) == options.strEncryptionMethod ) {
676- ret = zip_file_set_encryption (archive, uindex, ZIP_EM_AES_256, options. strPassword . toUtf8 () .constData ());
679+ ret = zip_file_set_encryption (archive, uindex, ZIP_EM_AES_256, passwordBytes .constData ());
677680 }
678681 if (ret != 0 ) {
679682 emit error ((" Failed to set compression options for entry: %1" ));
0 commit comments