1

I am analyzing various currency formatting symbols based on culture info. But below code is not outputting proper currency symbols in console.

    var price = 2587.789m;
    Console.OutputEncoding = Encoding.UTF8;
  
    var CultureDetails = new List<CultureInfo>
    {
        new CultureInfo("en-US"),
        new CultureInfo("en-GB"),
        new CultureInfo("en-IN"),
        new CultureInfo("en-AU"),
        new CultureInfo("zh-CN")
    };
    foreach (var culture in CultureDetails)
    {
        Console.WriteLine($"{culture.Name}" +
            $" {culture.DisplayName} {price.ToString("C", culture)}");
    }
    Console.WriteLine("✌");

The console output is as follows.

en-US English (United States) $2,587.79
en-GB English (United Kingdom) £2,587.79
en-IN English (India) ? 2,587.79
en-AU English (Australia) $2,587.79
zh-CN Chinese (China) ?2,587.79
???????????

Currency symbols for "en-IN"(India) and "zh-CN" (China) is not displayed . In the same way emojis are also not displayed properly. After analyzing a bit I set Console.OutputEncoding to utf-8

 Console.OutputEncoding = Encoding.UTF8;

at the beginning of the program and console is started outputting all characters properly.

en-US English (United States) $2,587.79
en-GB English (United Kingdom) £2,587.79
en-IN English (India) ₹ 2,587.79
en-AU English (Australia) $2,587.79
zh-CN Chinese (China) ¥2,587.79
✌

Is it possible to set the character encoding outside the program , I mean in OS level.

Deepak Koshy
  • 230
  • 3
  • 9
  • Does [this post](https://stackoverflow.com/questions/57131654/using-utf-8-encoding-chcp-65001-in-command-prompt-windows-powershell-window) help? – Paul Mar 23 '22 at 16:00

0 Answers0