SetUICulture()的这段代码有什么作用?

时间:2011-11-13 01:14:08

标签: c# internationalization console-application

说我想让我的程序在世界上任何人的计算机上正常工作。

我不知道这需要多少工作,但我认为使用控制台应用程序更容易,所以我开始反编译MSTest.exe入口点并找到:

private static void SetUICulture()
{
    Thread.CurrentThread.CurrentUICulture = 
        CultureInfo.CurrentUICulture.GetConsoleFallbackUICulture();
    if (
        (
            (Console.OutputEncoding.CodePage != 0xfde9) && 
            (Console.OutputEncoding.CodePage != 
             Thread.CurrentThread.CurrentUICulture.TextInfo.OEMCodePage)
        ) &&
        (Console.OutputEncoding.CodePage != 
         Thread.CurrentThread.CurrentUICulture.TextInfo.ANSICodePage)
    )
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
    }
}

看起来这里的目的是看看“后备”文​​化,然后看一些会阻止它“足够好”的条件,如果是这样的话,就把它设置为英语。

0xfde9在做什么?

这是否有效地使控制台应用程序国际化?

1 个答案:

答案 0 :(得分:0)

0xfde9代码页是UTF-8。所以代码说,如果代码页不是UTF8,OEM或ANSI,那么将文化设置为美国英语。

现在,假设存在您的应用程序所需的.Net Framework版本,您的应用程序应该正常工作,但问题是最终用户是否能够理解您的应用程序试图告诉他们的内容。