On Sunday, 27 January 2019 at 10:44:04 UTC, John Chapman wrote:
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));
}
Yes.
////////////////////////////////////////
extern(C) int setlocale(int,char*);

static this()
{
        import core.stdc.wchar_;
        import core.stdc.stdio;
        fwide(core.stdc.stdio.stdout,1);
        setlocale(0,cast(char*)"china");
}
///////////////////////////////////////////
it's simple than yours,and don't need convert every string,why not work after D2.0.78.1?

Reply via email to