2015-03-16 21 views
6

Tôi sử dụng Windows 7, Visual Studio 2013, C# và .NET 4.5.Thay vì ký hiệu tiền tệ, tôi nhận được dấu chấm hỏi vào Dấu nhắc Lệnh

Vấn đề của tôi là sản phẩm của dòng dưới đây:

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

myNewCar.determineMarketValue() trả về một đôi.

Làm cách nào để khắc phục sự cố này?

đầu ra của tôi là thế này: 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); 
     } 

    } 


} 

tôi đã thêm mã của tôi ..so đơn giản công việc chưa doent :(

Cập nhật: Mã được cập nhật để sử dụng Console.OutputEncoding = System.Text.Encoding.Unicode; và cũng tệ và giao diện điều khiển của tôi thiết lập được hiển thị bên dưới: enter image description here

Vấn đề bạn có thể thấy là mặc dù tôi đã cập nhật mã của mình để sử dụng unicode chan ged cài đặt cmd của tôi để sử dụng phông chữ Lucida Console khi tôi thực hiện chương trình từ VS phông chữ vẫn giữ nguyên tùy chọn phông chữ Raster.

LAST EDIT: Dưới đây là làm thế nào để thay đổi giao diện điều khiển phông chữ được sử dụng bởi Visual Studio giao diện điều khiển nhanh và simple.Now tệ xuất hiện một cách chính xác trong chương trình của tôi: Control console font & layout used by C# .NET console application

+2

Đây sẽ là sự cố mã hóa ... Đảm bảo bạn không sử dụng ASCII và thanh toán Unicode/UTF, v.v. – Belogix

+0

Bạn có thể hiển thị những gì bạn nhận được và giá trị của 'myNewCar.determineMarketValue()' không? –

+0

Có 1 phút xin – strax

Trả lời

2

Đó là theo thiết kế.

Ứng dụng giao diện điều khiển .NET xuất ra văn bản sử dụng một số phông chữ hệ thống được xác định trước (thường là Bảng điều khiển Lucida, nhưng có thể là Khẳng định hoặc phông chữ tương tự khác).

Phông chữ đó không cần thiết có biểu tượng cho đơn vị tiền tệ của bạn, để biểu tượng đó có thể được hiển thị không chính xác. Xem this link để biết các ký hiệu tiền tệ được hỗ trợ trong Bảng điều khiển Lucida.

Bạn không thể dễ dàng sửa lỗi trong ứng dụng bảng điều khiển chỉ vì không dễ thay đổi phông chữ được sử dụng để hiển thị văn bản trong bảng điều khiển (có thể với một số cuộc gọi WinAPI).

+0

Vấn đề như bạn có thể thấy là mặc dù tôi đã cập nhật mã của mình để sử dụng unicode đã thay đổi cài đặt cmd của tôi để sử dụng phông chữ Bảng điều khiển Lucida khi tôi thực thi chương trình từ VS phông chữ vẫn giữ nguyên tùy chọn phông chữ Raster. Vui lòng kiểm tra cập nhật của tôi. – strax

+0

Như bạn thấy biểu tượng tiền tệ được hỗ trợ bởi Bảng điều khiển Lucida – strax

+1

@strax ooh .... bạn chưa chỉ định chính xác rằng ký hiệu tiền tệ của bạn là đồng euro trong câu hỏi ban đầu. Có, Lucida Console có thể xuất biểu tượng này (tất nhiên, sử dụng 'Console.OutputEncoding = Encoding.UTF8;'). Nhưng điểm mấu chốt của câu trả lời của tôi là "bạn không thể chắc chắn chương trình của bạn đang được thực hiện trên máy tính nào khác mà chương trình của bạn sẽ sử dụng phông chữ đúng có tất cả các biểu tượng bạn cần để hiển thị văn bản bảng điều khiển". Như tôi đã nói - không có cách nào dễ dàng để thay đổi phông chữ điều khiển theo lập trình. Hãy xem một trong các cách tiếp cận: http://blogs.microsoft.co.il/pavely/2009/07/23/changing-console-fonts/ –

6

Thêm

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

trước khi viết ra.

Bạn cũng nên đảm bảo phông chữ bảng điều khiển là TrueType.

+0

Tùy chọn phông chữ của tôi chỉ là 3 Bảng điều khiển Lucida, Khẳng định và Phông chữ Raster – strax

+0

@strax Sau đó, bạn chỉ phải thử ba lần, bạn thật may mắn! :) – xanatos

+0

Vấn đề như bạn có thể thấy là mặc dù tôi đã cập nhật mã của mình để sử dụng unicode đã thay đổi cài đặt cmd của tôi để sử dụng phông chữ Bảng điều khiển Lucida khi tôi thực thi chương trình từ VS phông chữ vẫn giữ nguyên tùy chọn phông chữ Raster. Vui lòng kiểm tra cập nhật của tôi. – strax

0

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

Điều này không đủ cho tôi, dấu hỏi được thay thế bằng các ký tự không đọc được nữa. Phông chữ đang được chương trình bảng điều khiển của tôi sử dụng không hỗ trợ ký hiệu đồng euro.

Bàn điều khiển và điều khiển của Lucida đều thực hiện.

Để chắc chắn rằng font đúng là bắt đầu theo mặc định:

  • Bắt đầu chương trình giao diện điều khiển của bạn (sử dụng visual studio)
  • Chọn hộp điều khiển ở góc trên bên trái
  • Trong danh sách thả xuống menu chọn Mặc định
  • Trên phông chữ tab, chọn Bảng điều khiển Lucida và kích thước bạn cảm thấy thoải mái với

N ow vào lần sau khi bạn bắt đầu chương trình điều khiển trong studio trực quan, dấu euro được hiển thị chính xác.

Các vấn đề liên quan