【问题标题】:C# Unicode string outputC# Unicode 字符串输出
【发布时间】:2011-02-20 06:43:17
【问题描述】:

我有一个将字符串转换为 Unicode 字符串的函数:

private string UnicodeString(string text)
{
    return Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(text));
}

但是当我调用这个函数时,输出结果是错误的。看来我的功能不起作用。

Console.WriteLine(UnicodeString("добры дзень")) 在控制台打印类似这样的问题:????? ????

有没有办法让控制台显示正确?

更新

看起来问题不在 Unicode 中。我想可能是因为我在系统中没有正确的语言环境(Windows 7)而显示问号?

有没有办法让它在不改变语言环境的情况下工作?

【问题讨论】:

    标签: .net unicode c#-4.0


    【解决方案1】:

    首先,将输出编码改为UTF8:

    Console.OutputEncoding = Encoding.UTF8;
    Console.WriteLine("добры дзень");
    

    现在您仍会看到问号。原因是默认控制台的字体不支持西里尔字母。更改控制台字体:

    如果幸运的话,您应该会找到支持 Unicode 的不同字体:

    更改字体,您应该可以看到您的文字:

    一般情况下,如果您想可靠地显示所有 Unicode 字符,控制台可能不适合您。另见:C# console font(cmets 也很有趣)

    【讨论】:

      【解决方案2】:
      private string UnicodeString(string text)
      {
          return text;
      }
      

      字符串text 已经是Unicode。所有内部 C# 字符串都是 Unicode。当您将其转换为 ASCII 时,您会丢失字符。这就是为什么你得到???? ????。

      【讨论】:

        【解决方案3】:

        只需简单的Console.WriteLine("добры дзень"); 即可,无需任何转换。

        【讨论】:

        • 一开始就是这样,不行,输出就是问号。
        • 这可能是控制台对象以 ASCII 打印。尝试更改 OutputEncoding 属性,例如Console.OutputEncoding = Encoding.UTF8;
        猜你喜欢
        • 2011-03-10
        • 2017-03-14
        • 2015-12-20
        • 2023-03-17
        • 2016-05-02
        • 2023-02-14
        • 2013-08-31
        • 1970-01-01
        • 2014-02-22
        相关资源
        最近更新 更多