Unicode CultureInfo.NegativeSign显示为?在控制台中

时间:2016-10-08 23:19:38

标签: c#

我正在尝试了解NumberFormatInfo.NegativeSign属性,并在VS中输入以下代码。

CultureInfo ci = CultureInfo.CreateSpecificCulture ("");
ci.NumberFormat.NegativeSign = "\u203E";
double[] numbers = { -1.0, -16.3, -106.35 };

foreach (var number in numbers)
   Console.WriteLine (number.ToString (culture));

由于我遇到了一些错误,我将其修改为......

System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CreateSpecificCulture ("");
ci.NumberFormat.NegativeSign = "\u203E";
double[] numbers = { -1.0, -16.3, -106.35 };

foreach (var number in numbers)
    Console.WriteLine (number.ToString (ci));

编译得很好。但输出结果是:

?1
?16.3
?106.35

我从Microsoft页面here上获得了.Net库框架定义的代码,并且Unicode应该将负号更改为OVERLINE字符。我做错了什么吗?我为什么得到“?”标志而不是?

我不知道控制台输出配置要求。谢谢。另一个项目;原始代码在最后一行使用了culture而不是ci。我认为这是一个错字并改变了它。我希望我没错。以下是他们的行:

CultureInfo ci = CultureInfo.CreateSpecificCulture ("");
ci.NumberFormat.NegativeSign = "\u203E";
double[] numbers = { -1.0, -16.3, -106.35 };

foreach (var number in numbers)
    Console.WriteLine (number.ToString (culture));

我今天试图发帖提问,我收到一条消息,说我可能无法访问此网站。我不知道是谁或如何评估问题的内容。我也不确定为什么在没有任何问题的负面反馈时我会收到此提示。所提出的问题都不是多余的,他们符合网站上提供的指导原则。

1 个答案:

答案 0 :(得分:1)

控制台默认不显示unicode字符。您需要在自己的代码之前使用以下行专门启用它:

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