frwite works perfect in local codepages (non 65001). fwrite works perfect in 
files. fwrite outputs incorrect only when non ASCII symbols are outputed to 
stdout.

Example: 
    
    
    proc getConsoleOutputCP(): cint {. importc: "GetConsoleOutputCP", stdcall, 
dynlib: "kernel32" .}
    proc setConsoleOutputCP(codepage: cint): cint {. stdcall, dynlib: 
"kernel32", importc: "SetConsoleOutputCP", discardable .}
    
    let originalOutCP = getConsoleOutputCP()
    
    setConsoleOutputCP(65001)
    
    echo "Hello, ", "world! ", "Best regards from Nim!"
    echo "Здравей, ", "свят! ", "Поздравява те Nim" # same in buglarian
    echo "Hallo Welt, liebe Gr", "üße von Nim"      # same in German
    echo ""
    
    write(stdout, "Hello, ", "world! ", "Best regards from Nim!\n")
    write(stdout, "Здравей, ", "свят! ", "Поздравява те Nim\n") # same in 
buglarian
    write(stdout, "Hallo Welt, liebe Gr", "üße von Nim\n")      # same in German
    
    setConsoleOutputCP(originalOutCP)
    

Output: (Nim 0.15.2) 
    
    
    Hello, world! Best regards from Nim!
    Здравей, свят! Поздравява те Nim
    Hallo Welt, liebe Grüße von Nim
    
    Hello, world! Best regards from Nim!
    ��дравей, ��вят! ��оздравява те Nim
    Hallo Welt, liebe Gr��ße von Nim
    

Reply via email to