[PATCH] D43046: [Windows] Set the console output page to UTF-8

Reid Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 7 14:11:52 PST 2018


rnk created this revision.
rnk added a reviewer: zturner.
Herald added a subscriber: hiraditya.

Remove the Windows-specific logic that restricted us to printing only
printable ASCII characters. Use the normal UTF-8 isPrintable check
instead.

Fixes PR36267.

It's possible that older versions of the Windows console don't handle
CP_UTF8 correctly, but I think it's better to print UTF-8 for users of
modern OSs and gibberish on older installs.


https://reviews.llvm.org/D43046

Files:
  llvm/lib/Support/Locale.cpp
  llvm/lib/Support/Windows/Process.inc


Index: llvm/lib/Support/Windows/Process.inc
===================================================================
--- llvm/lib/Support/Windows/Process.inc
+++ llvm/lib/Support/Windows/Process.inc
@@ -269,6 +269,8 @@
 }
 
 std::error_code Process::FixupStandardFileDescriptors() {
+  // Set the console to output UTF-8.
+  ::SetConsoleOutputCP(CP_UTF8);
   return std::error_code();
 }
 
Index: llvm/lib/Support/Locale.cpp
===================================================================
--- llvm/lib/Support/Locale.cpp
+++ llvm/lib/Support/Locale.cpp
@@ -8,24 +8,11 @@
 namespace locale {
 
 int columnWidth(StringRef Text) {
-#if LLVM_ON_WIN32
-  return Text.size();
-#else
   return llvm::sys::unicode::columnWidthUTF8(Text);
-#endif
 }
 
 bool isPrint(int UCS) {
-#if LLVM_ON_WIN32
-  // Restrict characters that we'll try to print to the lower part of ASCII
-  // except for the control characters (0x20 - 0x7E). In general one can not
-  // reliably output code points U+0080 and higher using narrow character C/C++
-  // output functions in Windows, because the meaning of the upper 128 codes is
-  // determined by the active code page in the console.
-  return ' ' <= UCS && UCS <= '~';
-#else
   return llvm::sys::unicode::isPrintable(UCS);
-#endif
 }
 
 } // namespace locale


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D43046.133303.patch
Type: text/x-patch
Size: 1287 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180207/6939c741/attachment.bin>


More information about the llvm-commits mailing list