2011-07-14 20 views
4

我目前正在使用Java編寫基於文本的遊戲,這是在命令行解釋器中播放的。以統一碼輸出Java System.out

問題是,我想在命令行中回顯德語偏聽(行ü ö ä ß),默認情況下Windows系統不支持此命令行。然而,我發現了一種與一堆東西來實現這一目標:

  • 我改變了代碼頁至65001(使用chcp 65001
  • 我改變了字體爲Console Lucida
  • 我用了一個PrintStream與打印到命令 行(在Java程序中)的UTF-8編碼。

這樣做後,在命令行上輸出UTF-8字符的作品。但這不是每臺PC上的默認設置。

所以我想,我創建了一個批處理文件來啓動遊戲,它執行基本設置以啓用UTF-8輸出。更改代碼頁並使用UTF-8 PrintStream是沒有問題的,但更改字體有點棘手。

自Windows XP SP2以來,應該在每個Windows上安裝該字體,以免出現問題。此外,您可以通過更改註冊表項來更改字體,但這需要一些權限,而不是一個選項。

我搜索了一下,但我沒有發現任何font命令。是否有解決方法來更改控制檯字體?

+0

我很抱歉,而不是回答問題,我問我的電話。但是你是如何改變代碼頁的?我個人確信windows命令提示符不支持unicode。 – AlexR

+0

我也是。我把它添加到帖子中。 –

+0

我建議你檢查jscript/vbscript來執行這個配置。這些幾乎是全功能的編程語言,可以調用ActiveX和WMI API。您可以使用命令cscript或wscript運行這些腳本。 – AlexR

回答

2

我嘗試了一下,可以在沒有任何腳本且沒有JNI的情況下實現此目的:可以通過鏈接到cmd.exe並編輯該鏈接的屬性來選擇Lucida。

我在十六進制編輯器中打開鏈接,看看在那裏選擇了Lucide控制檯。真正有趣的是,在鏈接內部cmd.exe的絕對路徑被編碼(這是D:\ Win ...在我的系統上),然後我將鏈接複製到另一臺電腦,我在這裏看看它是否神奇地也在那裏工作(Windows是在該計算機上的C驅動器上),它確實:Windows修復了cmd.exe的絕對路徑,並且在該計算機上打開的控制檯也設置爲Lucida。

現在您只需要在該控制檯中打開您的程序(並在該控制檯中打印它),您只需要一個包含鏈接文件名稱的批處理文件(以大多數隱藏的.lnk結尾系統),其次是你的程序的名字,像這樣:

c.lnk t.exe 

,因爲你使用的是Java我猜你會寫是這樣的:

c.lnk java sth.jar 

我創建了一個小例子,你可以在這裏找到:

http://www.mediafire.com/?1yn40gsed3isjut

它包含:

  • 最小t.exe剛剛彈開一個MessageBox(如果你不信任噸。exe只是打開它在記事本或Pedump,看到它只調用MessageBox沒有其他api函數)

  • 鏈接c.lnk cmd.exe配置爲使用Lucida,(絕對路徑將由Windows修復運行它)

  • .bat文件這t.exe通過c.lnk

+0

了不起的工作!非常酷! – AlexR

+0

在此先感謝,我希望這真的可以在每個盒子上工作,我在這裏只有2個合約。 –

+0

出於某種原因,這對我不起作用。當我執行批處理時,只有內容得到迴應。我嘗試了不同的編碼,但在這裏似乎並不奏效。 –