- 
    
Bug
 - 
    Resolution: Invalid
 - 
    
P4: Low
 - 
    None
 - 
    5.7.1, 6.0.0
 - 
    None
 - 
    Qt5.7.1, I checked Qt6, the problem still exists
 
File location:Src\qtbase\src\gui\text\Qzip.cpp
Problem function:fileData,The two functions of QZipWriter::addFile and QZipReader::fileData handle file encodings that are inconsistent
Normal special case: it is normal when the codec is set to utf8, and the result of fromLocal8Bit is consistent with fromUtf8
The suspected code, at line 935:
QByteArray QZipReader::fileData(const QString &fileName) const
 {
 d->scanFiles();
 int i;
 for (i = 0; i < d->fileHeaders.size(); ++i) {
 if (QString::fromLocal8Bit(d->fileHeaders.at
.file_name) == fileName)
 break;
 }
 if (i == d->fileHeaders.size())
 return QByteArray();
........
}
Modified code:
QByteArray QZipReader::fileData(const QString &fileName) const
 {
 d->scanFiles();
 int i;
 for (i = 0; i < d->fileHeaders.size(); ++i) {
 FileHeader header=d->fileHeaders.at
;
  ushort general_purpose_bits = readUShort(header.h.general_purpose_bits);
  const bool inUtf8 = (general_purpose_bits & Utf8Names) != 0;
  QString file_name= inUtf8 ? QString::fromUtf8(header.file_name) : QString::fromLocal8Bit(header.file_name);
 if (file_name == fileName)
 break;
 }
 if (i == d->fileHeaders.size())
 return QByteArray();
.......
}