次の方法で共有


Console doesn’t display Arabic

The command prompt doesn’t have support of bidi languages. Therefore the components that run from the command line need not support Bidi languages. This is a limitation of Windows, which doesn’t support Bidi code pages in the console. So what should we do? Basically we have to fallback to another locale that is supported in the console. Basically we need to use GetConsoleFallbackUICulture and set this culture for our console application.

The code:

using System.Globalization;

        static void Main(string[] args)

        {

            // Set the Current

            System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ar-EG");

            // Show the Culture Info

            Console.WriteLine("Culture native name: {0}", CultureInfo.CurrentUICulture.NativeName);

            Console.WriteLine("Console fallback UI: {0}", CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture().Name);

            // Change the UI Culture to the Console Fallback UI

            System.Threading.Thread.CurrentThread.CurrentUICulture =

                                  CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture();

            Console.WriteLine("New UI Culture: {0}", CultureInfo.CurrentUICulture.NativeName);

        }

The expected output:

Culture native name: ??????? (???)

Console fallback UI: en

New UI Culture: English

 

The important line is to set the UI Culture properly at the beginning to load the correct resources:

System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture();

Comments

  • Anonymous
    January 31, 2010
    What benefit I gained after using "GetConsoleFallbackUICulture()" if I still unable to display Arabic characters? Best regards

  • Anonymous
    January 31, 2010
    The comment has been removed

  • Anonymous
    February 01, 2010
    Unfortunately, characters still unreadable, although in both cases I can copy these unreadable characters and they are pasted correctly. Best regards..

  • Anonymous
    February 15, 2010
    My thoughts on the problem (i.e. The real problem(s) with all of these console "fallback" discussions): http://blogs.msdn.com/9963784.aspx

  • Anonymous
    December 03, 2011
    The comment has been removed

  • Anonymous
    January 14, 2012
    Hi Hossam, I don't have an official statement, as this was before my time at MS... but my personal thought is that if we carry old featurescode for each release of Windows, we won't have space for new and advanced features. There maybe third party solutions.