From dad03e9ccc57da0a04d058ec418ce0068ce3841d Mon Sep 17 00:00:00 2001 From: Saturneric Date: Sat, 19 Mar 2022 14:09:55 +0800 Subject: (core, ui): Fix path double-byte encoding problem under Windows --- src/core/function/FileOperator.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/core/function/FileOperator.cpp') diff --git a/src/core/function/FileOperator.cpp b/src/core/function/FileOperator.cpp index d0a3df23..4977b3a9 100644 --- a/src/core/function/FileOperator.cpp +++ b/src/core/function/FileOperator.cpp @@ -55,15 +55,18 @@ bool GpgFrontend::FileOperator::WriteFile(const QString& file_name, bool GpgFrontend::FileOperator::ReadFileStd( const std::filesystem::path& file_name, std::string& data) { QByteArray byte_data; - bool res = ReadFile(QString::fromStdString(file_name.string()), byte_data); +#ifdef WINDOWS + bool res = ReadFile(QString::fromStdU16String(file_name.u16string()).toUtf8(), byte_data); +#else + bool res = ReadFile(QString::fromStdString(file_name.u8string()).toUtf8(), byte_data); +#endif data = byte_data.toStdString(); return res; } bool GpgFrontend::FileOperator::WriteFileStd( const std::filesystem::path& file_name, const std::string& data) { - return WriteFile(QString::fromStdString(file_name.string()), - QByteArray::fromStdString(data)); + return WriteFile(QString::fromStdString(file_name.u8string()).toUtf8(), QByteArray::fromStdString(data)); } std::string GpgFrontend::FileOperator::CalculateHash( @@ -75,7 +78,7 @@ std::string GpgFrontend::FileOperator::CalculateHash( if (info.isFile() && info.isReadable()) { ss << "[#] " << _("File Hash Information") << std::endl; ss << " " << _("filename") << _(": ") - << file_path.filename().string().c_str() << std::endl; + << file_path.filename().u8string().c_str() << std::endl; QFile f(info.filePath()); -- cgit v1.2.3