2010-10-16 87 views
2

我能夠正確顯示標準ASCII符號(最多127),如「心臟」,「筆記」,你知道我的意思。我也想展示一些我可以用來繪製牆壁的東西(比如U0205),但它不起作用。好吧,它可以工作,但看起來像「?」。任何方式我怎麼能展示他們?謝謝。Console.Write() - 顯示擴展的ascii字符?

+0

Unicode U + 0205是「帶有雙重墳墓的拉丁小寫字母」,所以我不確定你在說什麼字符... – 2010-10-16 08:13:02

+0

顯示實際的代碼。 – 2010-10-16 10:44:32

回答

16

控制檯模式應用程序僅限於8位代碼頁編碼。許多機器的默認設置是IBM437,該代碼頁與舊的IBM PC字符集相匹配。您可以通過分配OutputEncoding屬性來更改代碼頁:

 Console.OutputEncoding = Encoding.UTF8; 

但現在您通常會遇到字體問題。控制檯默認爲終端字體,這是一種舊字體,字體在正確的位置具有字形以生成IBM PC字符集。沒有很多可用的字體可以生成與Unicode代碼點匹配的適當字形。 Consolas是關於它的,在Vista和Win7上可用。

但是,這不是你要求的,我想,我猜你實際上是在問老盒子畫的人物。這沒有任何修改控制檯設置的作品,你只需要使用正確的Unicode字符。下面是一個應該在複製和粘貼中生存的示例:

class Program { 
    static void Main(string[] args) { 
     Console.WriteLine("╒════════╕"); 
     Console.WriteLine("│ Hello │"); 
     Console.WriteLine("│ world │"); 
     Console.WriteLine("╘════════╛"); 
     Console.ReadLine(); 
    } 
} 

要找到這些字符,請使用Windows charmap.exe小程序。單擊「高級視圖」複選框並在「搜索」文本框中鍵入「框」,網格將填充框繪製字符。第一個可以正確轉換爲控制檯的可用控件是'\ u250c'。

1

該問題似乎與控制檯應用程序,而不是您的程序。在Windows標準控制檯(CMD.EXE)似乎不支持Unicode正確的 - 例如,嘗試複製下面的字符串,並直接粘貼到的cmd.exe窗口:

FußballÖü

PowerShell似乎也遭受同樣的問題。

您的問題的一個可能的解決方案是創建一個專用的窗口/窗體用作「輸出控制檯」,而不是使用通過其執行應用程序的實際控制檯。

+0

這些字符在控制檯窗口和Server 2008下的PowerShell中使用默認柵格字體顯示得很好。你正在運行什麼版本的Windows? – 2010-10-18 08:40:14