2015-03-16 8 views
6

Ich benutze Windows 7, Visual Studio 2013, C# und .NET 4.5.Anstelle des Währungssymbols bekomme ich ein Fragezeichen in die Eingabeaufforderung

Mein Problem ist, die Ausgabe der Zeile unter:

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

myNewCar.determineMarketValue() einen Doppelzurückgibt.

Wie kann ich dieses Problem beheben?

Meine Ausgabe ist dies: 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); 
     } 

    } 


} 

ich meinen Code ..so einfache, aber doent Arbeit :(

hinzugefügt Update: Code aktualisiert verwenden Console.OutputEncoding = System.Text.Encoding.Unicode; und auch meine Währung und Konsoleneinstellung sind unten gezeigt: enter image description here

Das Problem, wie Sie sehen können, ist, dass, obwohl ich meinen Code aktualisiert, um Unicode Chan zu verwenden meine CMD-Einstellungen zu verwenden Lucida Console-Schriftart, wenn ich das Programm von VS die Schriftart bleibt die gleiche Raster-Schriftarten Option.

LAST EDIT: Hier ist, wie die Konsole Schriftart von Visual Studio Konsole schnell und simple.Now Währung in meinem Programm erscheint richtig verwendet ändern: Control console font & layout used by C# .NET console application

+2

Dies wird ein Kodierungsproblem sein ... Stellen Sie sicher, dass Sie nicht ASCII verwenden und Unicode/UTF etc. checken. – Belogix

+0

Können Sie zeigen, was Sie bekommen und auch den Wert von 'myNewCar.determineMarketValue()'? –

+0

Ja 1 Minute pls – strax

Antwort

2

Es ist von Entwurf.

.NET-Konsole Anwendung gibt Text mit einigen vordefinierten Systemschriftarten (in der Regel Lucida-Konsole, aber es kann Consolas oder andere ähnliche Schriftart sein).

Die Schriftart, die nicht notwendig ist, hat Symbol für Ihre Währung, damit Symbol falsch angezeigt werden kann. Informationen zu unterstützten Währungssymbolen finden Sie in der Lucida Console unter this link.

Sie können es nicht einfach in der Konsolenanwendung reparieren, nur weil es nicht so einfach ist, die Schriftart für die Anzeige von Text in der Konsole zu ändern (es ist möglich mit einigen WinAPI-Aufrufe, nehme ich an).

+0

Das Problem, wie Sie sehen können, ist, dass, obwohl ich meinen Code aktualisiert, um Unicode zu verwenden geändert meine CMD-Einstellungen Lucida Console Schriftart verwenden, wenn ich das Programm von VS die Schriftart bleibt die gleichen Raster-Schriftarten Option. Bitte überprüfen Sie mein Update. – strax

+0

Wie Sie sehen können Währungssymbol wird unterstützt von Lucida Console – strax

+1

@strax ooh .... Sie haben nicht genau angegeben, dass Sie Währungssymbol ist Euro in der ursprünglichen Frage. Ja, Lucida Console kann dieses Symbol ausgeben (natürlich unter Verwendung von 'Console.OutputEncoding = Encoding.UTF8;'). Aber der Schlüsselpunkt meiner Antwort war etwas wie "Sie können nicht sicher sein, was Ihr Programm auf dem Computer ausgeführt wird, dass Ihr anderes die korrekte Schriftart mit allen Symbolen verwendet, die Sie brauchen, um den Konsolentext anzuzeigen". Wie gesagt - es gibt keine einfache Möglichkeit, die Schriftart der Konsole programmgesteuert zu ändern. Werfen Sie einen Blick auf einen der Ansätze: http://blogs.microsoft.co.il/paveley/2009/07/23/changing-console-fonts/ –

6

hinzufügen

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

Ausgabe vor dem Schreiben.

Sie sollten auch sicherstellen, dass die Konsolenschrift TrueType ist.

+0

Meine Schriftoptionen sind nur 3 Lucida Console, Consolas und Raster Fonts – strax

+0

@strax Dann müssen Sie nur dreimal versuchen, du hast Glück! :) – xanatos

+0

Das Problem, wie Sie sehen können, ist, dass, obwohl ich meinen Code aktualisiert, um Unicode zu verwenden, änderte meine CMD-Einstellungen, Lucida Console Schriftart zu verwenden, wenn ich das Programm von VS die Schriftart die gleichen Raster Schriftarten Option ausführen. Bitte überprüfen Sie mein Update. – strax

0

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

Das ist für mich nicht genug war wurde die Fragezeichen durch noch nicht lesbare Zeichen ersetzt. Die von meinem Konsolenprogramm verwendete Schriftart unterstützt das Euro-Zeichen nicht.

Lucida Console und Consolas beide tun.

Um sicherzustellen, dass die richtige Schriftart standardmäßig gestartet wird:

    Ihr Konsolenprogramm starten
  • Wählen Sie das Kontrollkästchen in der oberen linken Ecke
  • Im Drop (Visual Studio) nach unten drücken Menü wählen Defaults
  • auf die Registerkarte Schriftarten wählen Lucida Console und eine Größe, die Sie bequem mit

N Wenn Sie das Konsolenprogramm das nächste Mal im Visual Studio starten, wird das Eurozeichen korrekt angezeigt.

Verwandte Themen