From 78e2ba6f38de67917befdabfe9d40a910b02a88c Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Fri, 15 Dec 2023 16:13:08 +0800 Subject: [PATCH 03/17] fix(LC_TIME): set LC_TIME to UTF-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据环境变量重新设置LC_TIME为UTF-8 Closes #21517,#24064 --- src/main.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 05f7153..981fdbf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -165,6 +165,24 @@ int main(int argc, char *argv[]) exit(EXIT_SUCCESS); } + /// NOTE: 由于strftime获取系统locale进行格式化,Qt使用UTF8,若编码设置不为UTF8中文环境下会导致乱码 + /// 所以LANG后面的编码若不为UTF-8,修改成UTF-8,使获取时间都为UTF-8格式 + QString lang = qgetenv("LANG"); + if (lang.contains(".")) + { +#if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0)) + QStringList splitRes = lang.split(".", QString::SkipEmptyParts); +#else + QStringList splitRes = lang.split(".", Qt::SkipEmptyParts); +#endif + if(splitRes.size() == 2 && splitRes.at(1)!="UTF-8" ) + { + splitRes.replace(1, "UTF-8"); + QString newLocale = splitRes.join("."); + setlocale(LC_TIME, newLocale.toStdString().c_str()); + } + } + // 安装翻译 installTranslator(); -- 2.33.0