当我的用户名不是 ascii 时,如何使 System.Environment.GetEnvironmentVariable("USERNAME") UTF-8 兼容?

问题描述 投票:0回答:1

在我的 C# Windows 应用程序中,我从

System.Environment.GetEnvironmentVariable("USERNAME")
获取用户名,而我的系统帐户不是 ascii,因此在调试时我得到的用户名是“????”,名称被更改。

在 Windows 中,我尝试启用 beta utf8 Unicode。它可以解决这个问题,但它是一个全局设置,不仅仅适用于我的应用程序。我不想要这样,我怎样才能使

GetEnvironmentVariable("USERNAME")
UTF8 兼容?

c# windows encoding utf-8
1个回答
0
投票

您的输出编码可能设置为 ASCII。在发送输出之前尝试使用它:

Console.OutputEncoding = System.Text.Encoding.UTF8;

这是一个您可能会发现很方便的小控制台测试应用程序:

using System
using System.Text;

public static class ConsoleOutputTest {
    public static void Main() {
        Console.OutputEncoding = System.Text.Encoding.UTF8;
        for (var i = 0; i <= 1000; i++) {
            Console.Write(Strings.ChrW(i));
            if (i % 50 == 0) { // break every 50 chars
                Console.WriteLine();
            }
        }
        Console.ReadKey();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.