From c793684c9c990de282933ef9ceb17075ce4f6b7a Mon Sep 17 00:00:00 2001 From: CodingRookie98 <520whjoker@gmail.com> Date: Sat, 25 Jan 2025 14:56:42 +0800 Subject: [PATCH] Fix the issue where the localization information is set before the program calls the 'utf8_decode' function in the project code. After calling the 'utf8_decode' function, the restored localization information is the default setting from the user environment variables, rather than the current program's localization information. Therefore, the 'setlocale(LC_ALL, "")' call should be changed to 'setlocale(LC_ALL, NULL)' to align with the code logic. --- include/indicators/display_width.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/indicators/display_width.hpp b/include/indicators/display_width.hpp index c937d2b..b1283ff 100644 --- a/include/indicators/display_width.hpp +++ b/include/indicators/display_width.hpp @@ -311,7 +311,7 @@ static inline int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n) { // convert UTF-8 string to wstring #ifdef _MSC_VER static inline std::wstring utf8_decode(const std::string& s) { - auto r = setlocale(LC_ALL, ""); + auto r = setlocale(LC_ALL, NULL); std::string curLocale; if (r) curLocale = r; @@ -327,7 +327,7 @@ static inline std::wstring utf8_decode(const std::string& s) { } #else static inline std::wstring utf8_decode(const std::string& s) { - auto r = setlocale(LC_ALL, ""); + auto r = setlocale(LC_ALL, NULL); std::string curLocale; if (r) curLocale = r;