而不是货币符号我在命令提示符中得到一个问号

我使用的是Windows 7,Visual Studio 2013,C#和.NET 4.5。

我的问题是以下行的输出:

Console.WriteLine("Car`s value: {0:C} ", myNewCar.determineMarketValue()); 

myNewCar.determineMarketValue()返回一个double。

我该如何解决这个问题?

我的输出是这样的: qmarkc#

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Lesson15SimpleClasses { class Program { static void Main(string[] args) { Car myNewCar = new Car(); myNewCar.Make = "Oldsmobile"; myNewCar.Model = "Cutlas Supreme"; myNewCar.Year = 1986; myNewCar.Color = "Silver"; Console.OutputEncoding = System.Text.Encoding.Unicode; Console.WriteLine("{0} - {1} - {2}", myNewCar.Make, myNewCar.Model, myNewCar.Color); Console.WriteLine("Car`s value: {0:C} ", myNewCar.determineMarketValue()); Console.ReadLine(); } } class Car { public string Make { get; set; } public string Model { get; set; } public int Year { get; set; } public string Color { get; set; } public double determineMarketValue() { double carValue = 100.0; if (this.Year > 1990) carValue = 10000.0; else carValue = 2000.0; return (carValue); } } } 

我添加了我的代码..所以简单但doent工作:(

更新:代码已更新为使用Console.OutputEncoding = System.Text.Encoding.Unicode; 我的货币和控制台设置如下所示: 在此处输入图像描述

您可以看到的问题是,即使我更新了我的代码以使用unicode更改了我的cmd设置以使用Lucida Console字体,当我从VS执行程序时,字体仍然是相同的Raster字体选项。

最后编辑:以下是如何快速简单地更改Visual Studio控制台使用的控制台字体。现在我的程序中出现正确的货币: C#.NET控制台应用程序使用的控制台字体和布局

这是设计的。

.NET控制台应用程序使用一些预定义的系统字体输出文本(通常是Lucida Console,但它可以是Consolas或其他类似的字体)。

该字体不必具有您的货币符号,因此该符号可能显示不正确。 请参阅此链接以获取Lucida Console中支持的货币符号。

你不能轻易地在控制台应用程序中修复它只是因为更改用于在控制台中显示文本的字体并不那么容易(我猜想可以通过一些WinAPI调用)。

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

在写输出之前。

您还应确保控制台字体为TrueType。

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

这对我来说还不够 ,问号被更难以理解的角色所取代。 我的控制台程序使用的字体不支持欧元符号。

Lucida Console和Consolas都可以。

要确保默认启动正确的字体:

  • 启动控制台程序(使用visual studio)
  • 选择左上角的控制框
  • 在下拉菜单中选择默认值
  • 在标签字体上选择Lucida控制台和您感觉舒适的尺寸

现在,下次在visual studio中启动控制台程序时,欧元符号会正确显示。