2011-04-01 98 views
3

在我的C程序中,我不得不將我的unicode盒子繪圖字符換成DOS代碼第437頁的轉義字符,以使它在Windows命令提示符下工作。是否可以更改gnome-terminal的代碼頁以便在本機編譯Linux程序時正確顯示這些字符?gnome-terminal是否支持DOS代碼頁?

謝謝。

回答

4

https://nethackwiki.com/wiki/IBMgraphics

目前的gnome-terminal不 有437代碼頁設置,但 它支持其他代碼頁 是等價的NetHack的目的, 如862(希伯來語)。

要在 GNOME終端設置代碼頁862:

  • 選擇終端 - >設置字符Encoding->添加或刪除。
  • 在左側窗格中,選擇描述希伯來語的行和編碼IBM862的 。
  • 單擊兩個窗格之間的右箭頭。
  • 單擊關閉。

上述步驟只需要爲Gnome 安裝的一生做一次 。完成後,它是 足以:

  • 選擇終端,設置字符編碼,然後希伯來語(IBM862)。

應當注意的是,在Ubuntu 賈蒂當前 默認的gnome末端字體作爲 只要eight_bit_tty設置爲false完全支持DECgraphics。

+0

+1從Nethack的答案!然後+1對另一個答案,因爲它更強大,更有意義。 ;-) – ptomato 2011-04-02 08:36:30

0

如果您需要這些字符,您應該使用正確的Unicode碼值並將它們輸出爲UTF-8。或者,如果您願意,可以將它們輸出爲寬字符,並讓標準庫的語言環境系統負責將它們轉換爲UTF-8或用戶選擇的另一種「原生」編碼(甚至可能是CP437,儘管我已經從來沒有見過系統設置很差......)。

+1

這就是我最初的做法,但是Window的命令提示符非常差,以至於默認情況下它不支持Unicode,沒有解決方法,所以我將它們轉換爲代碼頁437個字符。寬字符的轉換我不太瞭解,但通常他們最終會轉到+和|而不是正確的盒子繪製字符。 – 2011-04-03 07:27:20

+0

而不是打破你的程序,並在正確的系統上需要醜陋的解決方法,我只是在Windows上做一些包裝層來將Unicode轉換爲DOS代碼頁字符。 – 2011-04-03 14:36:23

+0

這不是[命令提示符](http:// homepage。 ntlworld.com./jonathan.deboynepollard/FGA/command-prompts.html),[它是一個控制檯](http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/a-command-interpreter-is-not -a-console.html)和[WriteConsoleW()](http://msdn.microsoft.com/en-us/library/ms687401%28v=vs.85%29.aspx)Win32 API函數功能非常強大將Unicode寫入控制檯。所有這些與代碼頁混淆在一起的是在控制檯下面在Windows NT上使用Unicode的點。 – JdeBP 2011-05-17 12:37:24

相關問題