On Sunday, 27 January 2019 at 06:14:15 UTC, FrankLike wrote:
On Saturday, 26 January 2019 at 09:33:33 UTC, John Chapman wrote:

What has that code got to do with setting the console's font? So you need to add more code to accomplish that.

You don't need to set the font to achieve the goal, why not?

This should work:

const(char)[] toCodePage(const(char)[] s, uint codePage = 0) {
  import core.sys.windows.winnls, std.utf;

  foreach (char c; s) {
    if (c >= 0x80) {
      auto temp = s.toUTF16z();
      char[] result;
if ((result.length = WideCharToMultiByte(codePage, 0, temp, -1, null, 0, null, null)) != 0) WideCharToMultiByte(codePage, 0, temp, -1, result.ptr, cast(int)result.length, null, null);
      return result;
    }
  }
  return s;
}

void main() {
  import core.sys.windows.wincon, std.stdio;

  SetConsoleOutputCP(936); // Simplified Chinese codepage
  writeln("字符".toCodePage(936));
}

Reply via email to