In our program, we use std::setlocale(LC_ALL, ".UTF8");
to support UTF-8 encoding, as noted in the Microsoft documentation. However, when certain C++ STL functions fail, their message()
outputs are not in UTF-8.
After investigating the source code, I found that the error messages are always formatted according to the system's default locale, as shown in this STL implementation:
While it would be acceptable if the system locale used UTF-8 as the codepage, allowing the messages to be correctly printed to log files, this is not the case. There is a "Beta: Use Unicode UTF-8 for worldwide language support" setting in the Region settings, which does the job correctly, but toggling that setting requires a reboot, which is not acceptable for our requirements.
QuestionShould the std::error_code::message
function respect the locale set by the user (e.g., via std::setlocale
), or should it continue to use the system's default locale? If the former, is there a plan to implement this behavior in the Microsoft STL implementation?
Please let me know if you need any additional information or clarification.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4